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

Diagnostic information such as a warning or compilation error.

# Summary

## Types

position()

Where in a file the diagnostic applies. Can be either a line number, a `{line, column}` tuple, a range specified as `{start_line, start_col, end_line, end_col}`. `0` line represents unknown.

severity()

Severity of a diagnostic

t()

# Types

Link to this type

# position()

View Source

    @type position() ::
      non_neg_integer()
      | {pos_integer(), non_neg_integer()}
      | {pos_integer(), non_neg_integer(), pos_integer(), non_neg_integer()}

Where in a file the diagnostic applies. Can be either a line number, a `{line, column}` tuple, a range specified as `{start_line, start_col, end_line, end_col}`. `0` line represents unknown.

Line numbers are one-based, and column numbers in a range are zero-based and refer to the cursor position at the start of the character at that index. For example, to indicate that a diagnostic applies to the first `n` characters of the first line, the range would be `{1, 0, 1, n}`.

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: any(),
      file: Path.t(),
      message: IO.chardata(),
      position: position(),
      severity: severity(),
      stacktrace: Exception.stacktrace()
    }