42 lines
759 B
Rust
42 lines
759 B
Rust
use super::source::Span;
|
|
|
|
#[derive(Clone, Debug)]
|
|
pub enum Number {
|
|
Integer(i64),
|
|
Float(f64),
|
|
}
|
|
|
|
#[derive(Clone)]
|
|
pub struct SpannedData<T> {
|
|
pub data: T,
|
|
pub span: Span,
|
|
}
|
|
|
|
impl<T> std::fmt::Debug for SpannedData<T>
|
|
where
|
|
T: std::fmt::Debug,
|
|
{
|
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
|
self.data.fmt(f)
|
|
}
|
|
}
|
|
|
|
type InnerIdentifier = internment::ArcIntern<String>;
|
|
|
|
#[derive(Clone)]
|
|
pub struct Identifier(InnerIdentifier);
|
|
|
|
impl Identifier {
|
|
pub fn from_ref(identifier: &str) -> Self {
|
|
Self(InnerIdentifier::from_ref(identifier))
|
|
}
|
|
}
|
|
|
|
impl std::fmt::Debug for Identifier {
|
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
|
f.write_str("`")?;
|
|
f.write_str(self.0.as_str())?;
|
|
f.write_str("`")
|
|
}
|
|
}
|