Mix.Task.Compiler.Diagnostic — Mix v1.16.3

Search documentation of Mix

# View Source Mix.Task.Compiler.Diagnostic (Mix v1.16.3)

Diagnostic information such as a warning or compilation error.

The file and position relate to where the diagnostic should be shown. If there is a file and position, then the diagnostic is precise and you can use the given file and position for generating snippets, IDEs annotations, and so on. An optional span is available with the line and column the diagnostic ends.

Otherwise, a stacktrace may be given, which you can place your own heuristics to provide better reporting.

The source field points to the source file the compiler tracked the error to. For example, a file `lib/foo.ex` may embed `.eex` templates from `lib/foo/bar.eex`. A syntax error on the EEx template will point to file `lib/foo/bar.eex` but the source is `lib/foo.ex`.

# Summary

## Types

severity()

Severity of a diagnostic

t()

# Types

Link to this type

# severity()

View Source

    @type severity() :: :error | :warning | :information | :hint

Severity of a diagnostic:

- `:error` - An issue that caused compilation to fail

- `:warning` - An issue that did not cause failure but suggests the programmer may have made a mistake

- `:hint` - A suggestion for style or good practices that is not as severe as a warning

- `:information` - Any other information relevant to compilation that does not fit into the above categories

Link to this type

# t()

View Source

    @type t() :: %Mix.Task.Compiler.Diagnostic{
      compiler_name: String.t(),
      details: term(),
      file: Path.t() | nil,
      message: IO.chardata(),
      position: Code.position(),
      severity: severity(),
      source: Path.t() | nil,
      span: {line :: pos_integer(), column :: pos_integer()} | nil,
      stacktrace: Exception.stacktrace()
    }