use super::{Range, Severity};
use serde::{Deserialize, Serialize};
use std::fmt;
#[derive(Clone, Serialize, Deserialize, Debug)]
pub struct LintDiag {
pub range: Range,
pub severity: Severity,
#[serde(skip_serializing_if = "Option::is_none")]
pub code: Option<NumberOrString>,
#[serde(skip_serializing_if = "Option::is_none")]
pub source: Option<String>,
pub message: String,
pub id: String,
pub uri: Uri,
}
impl fmt::Display for LintDiag {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(
f,
"\n{}: {}\n --> {}:{}:{}",
self.severity,
self.message,
self.uri,
self.range.start.line,
self.range.start.character,
)
}
}
#[derive(Clone, Serialize, Deserialize, Debug)]
pub enum NumberOrString {
Number(i32),
String(String),
}
type Uri = String;