lib/absinthe/schema/error.ex

defmodule Absinthe.Schema.Error do
  @moduledoc """
  Exception raised when a schema is invalid
  """
  defexception phase_errors: []

  def message(error) do
    details =
      error.phase_errors
      |> Enum.map(fn %{message: message, locations: locations} ->
        locations =
          locations
          |> Enum.map(fn
            %{line: line, file: file} -> "#{file}:#{line}"
            %{column: column, line: line} -> "Column #{column}, Line #{line}"
          end)
          |> Enum.sort()
          |> Enum.join("\n")

        message = String.trim(message)

        """
        ---------------------------------------
        ## Locations
        #{locations}

        #{message}
        """
      end)
      |> Enum.join()

    """
    Compilation failed:
    #{details}
    """
  end
end