solidhunter_lib/types/
lint_diag.rs1use super::{Range, Severity};
2use serde::{Deserialize, Serialize};
3use std::fmt;
4
5#[derive(Clone, Serialize, Deserialize, Debug)]
6pub struct LintDiag {
7 pub range: Range,
9
10 pub severity: Severity,
12
13 #[serde(skip_serializing_if = "Option::is_none")]
14 pub code: Option<NumberOrString>,
16
17 #[serde(skip_serializing_if = "Option::is_none")]
18 pub source: Option<String>,
21
22 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;