use std::{borrow::Cow, error::Error};
use oxc_span::LabeledSpan;
pub trait Diagnostic: Error {
fn code(&self) -> Option<Cow<'_, str>> {
None
}
fn severity(&self) -> Option<Severity> {
None
}
fn help(&self) -> Option<Cow<'_, str>> {
None
}
fn note(&self) -> Option<Cow<'_, str>> {
None
}
fn url(&self) -> Option<Cow<'_, str>> {
None
}
fn source_code(&self) -> Option<&dyn SourceCode> {
None
}
fn labels(&self) -> &[LabeledSpan] {
&[]
}
}
#[derive(Copy, Clone, Debug, Eq, Ord, PartialEq, PartialOrd, Default)]
pub enum Severity {
Advice,
Warning,
#[default]
Error,
}
pub trait SourceCode: Send + Sync {
fn data(&self) -> &[u8];
fn name(&self) -> Option<&str> {
None
}
}