Skip to main content

gram_diagnostics/
lib.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4#[serde(rename_all = "lowercase")]
5pub enum Severity {
6    Error,
7    Warning,
8    Information,
9    Hint,
10}
11
12#[derive(Debug, Clone, Serialize, Deserialize)]
13pub struct Position {
14    pub line: u32,
15    pub character: u32,
16}
17
18#[derive(Debug, Clone, Serialize, Deserialize)]
19pub struct Range {
20    pub start: Position,
21    pub end: Position,
22}
23
24#[derive(Debug, Clone, Serialize, Deserialize)]
25pub struct Diagnostic {
26    pub severity: Severity,
27    pub rule: String,
28    pub message: String,
29    pub range: Range,
30    #[serde(skip_serializing_if = "Option::is_none")]
31    pub code: Option<String>,
32    #[serde(skip_serializing_if = "Option::is_none")]
33    pub help: Option<String>,
34}
35
36#[derive(Debug, Clone, Serialize, Deserialize)]
37pub struct FileResult {
38    pub path: String,
39    pub diagnostics: Vec<Diagnostic>,
40}
41
42#[derive(Debug, Clone, Serialize, Deserialize)]
43pub struct LintResult {
44    pub schema_version: u32,
45    pub tool: String,
46    pub files: Vec<FileResult>,
47}