use std::path::PathBuf;
pub type Span = std::ops::Range<usize>;
#[derive(Clone, Debug, PartialEq)]
pub struct Location {
pub span: Span,
pub path: PathBuf,
}
impl Location {
pub fn new(span: Span, path: PathBuf) -> Self {
Self { span, path }
}
pub fn internal() -> Self {
Self {
span: Span { start: 0, end: 0 },
path: PathBuf::from("internal"),
}
}
}
impl Default for Location {
fn default() -> Self {
Self {
span: 0..0,
path: PathBuf::new(),
}
}
}
impl ariadne::Span for Location {
type SourceId = PathBuf;
fn source(&self) -> &Self::SourceId {
&self.path
}
fn start(&self) -> usize {
self.span.start
}
fn end(&self) -> usize {
self.span.end
}
}
pub(crate) const GLOBAL_LABEL: &str = "_mimium_global";