solidhunter_lib/types/
lint_diag.rs

1use super::{Range, Severity};
2use serde::{Deserialize, Serialize};
3use std::fmt;
4
5#[derive(Clone, Serialize, Deserialize, Debug)]
6pub struct LintDiag {
7    /// The range at which the message applies.
8    pub range: Range,
9
10    /// The diagnostic's severity.
11    pub severity: Severity,
12
13    #[serde(skip_serializing_if = "Option::is_none")]
14    /// The diagnostic's code. Can be omitted.
15    pub code: Option<NumberOrString>,
16
17    #[serde(skip_serializing_if = "Option::is_none")]
18    /// A human-readable string describing the source of this
19    /// diagnostic, e.g. 'typescript' or 'super lint'.
20    pub source: Option<String>,
21
22    /// The diagnostic's message.
23    pub message: String,
24
25    pub id: String,
26
27    pub uri: Uri,
28}
29
30impl fmt::Display for LintDiag {
31    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
32        write!(
33            f,
34            "\n{}: {}\n  --> {}:{}:{}",
35            self.severity,
36            self.message,
37            self.uri,
38            self.range.start.line,
39            self.range.start.character,
40        )
41    }
42}
43
44#[derive(Clone, Serialize, Deserialize, Debug)]
45pub enum NumberOrString {
46    Number(i32),
47    String(String),
48}
49
50type Uri = String;