# `AtpClient.Lint.Diagnostic`
[🔗](https://github.com/jcschuster/AtpClient/blob/v0.1.3/lib/atp_client/lint/diagnostic.ex#L1)

One structured issue produced by an `AtpClient.Lint` backend.

Positions are 1-based and character-oriented to match Monaco Editor's
marker API directly; this keeps the Smart Cell JS layer free of any
index translation. `end_line` / `end_column` are optional — when
omitted, consumers typically highlight a single character starting at
`{line, column}`.

The `:source` field identifies which backend produced the diagnostic
(`"local"` or `"tptp4x"`) and is shown in Monaco's problem hover, so
users can tell at a glance whether an issue is a cheap structural
check or an authoritative TPTP4x verdict.

# `severity`

```elixir
@type severity() :: :error | :warning | :info | :hint
```

# `t`

```elixir
@type t() :: %AtpClient.Lint.Diagnostic{
  column: pos_integer(),
  end_column: pos_integer() | nil,
  end_line: pos_integer() | nil,
  line: pos_integer(),
  message: String.t(),
  severity: severity(),
  source: String.t() | nil
}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
