#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Span {
pub file_id: u32,
pub start: u32,
pub end: u32,
}
impl Span {
pub fn new(file_id: u32, start: u32, end: u32) -> Self {
Self {
file_id,
start,
end,
}
}
pub fn dummy() -> Self {
Self {
file_id: 0,
start: 0,
end: 0,
}
}
pub fn merge(self, other: Span) -> Span {
debug_assert_eq!(
self.file_id, other.file_id,
"cannot merge spans from different files"
);
Span {
file_id: self.file_id,
start: self.start.min(other.start),
end: self.end.max(other.end),
}
}
}