use super::*;
#[derive(Debug)]
pub(crate) struct Diagnostic {
pub(crate) display: String,
pub(crate) id: String,
pub(crate) message: String,
pub(crate) range: lsp::Range,
pub(crate) severity: lsp::DiagnosticSeverity,
}
impl From<Diagnostic> for lsp::Diagnostic {
fn from(value: Diagnostic) -> lsp::Diagnostic {
lsp::Diagnostic {
code: Some(lsp::NumberOrString::String(value.id)),
message: value.message,
range: value.range,
severity: Some(value.severity),
source: Some("just-lsp".to_string()),
..Default::default()
}
}
}
impl Diagnostic {
pub(crate) fn error(message: impl Into<String>, range: lsp::Range) -> Self {
Self::new(message, range, lsp::DiagnosticSeverity::ERROR)
}
pub(crate) fn new(
message: impl Into<String>,
range: lsp::Range,
severity: lsp::DiagnosticSeverity,
) -> Self {
Self {
display: String::new(),
id: String::new(),
message: message.into(),
range,
severity,
}
}
pub(crate) fn warning(message: impl Into<String>, range: lsp::Range) -> Self {
Self::new(message, range, lsp::DiagnosticSeverity::WARNING)
}
}