ran rust format

This commit is contained in:
Andrew Segavac
2021-09-11 12:34:23 -06:00
parent 1e4deadb9c
commit a6620b2a86
6 changed files with 958 additions and 452 deletions

View File

@@ -6,7 +6,9 @@ pub struct IdGenerator {
impl IdGenerator {
pub fn new() -> Self {
IdGenerator{counter: RefCell::new(0)}
IdGenerator {
counter: RefCell::new(0),
}
}
pub fn next(&self) -> String {
@@ -16,32 +18,31 @@ impl IdGenerator {
}
pub fn new_unit() -> TypeUsage {
TypeUsage::Named(NamedTypeUsage{
name: Identifier{
name: Spanned{
span: Span{left: 0, right: 0}, //todo: figure out a sane value for these
TypeUsage::Named(NamedTypeUsage {
name: Identifier {
name: Spanned {
span: Span { left: 0, right: 0 }, //todo: figure out a sane value for these
value: "unit".to_string(),
}
}
},
},
})
}
pub fn new_never() -> TypeUsage {
TypeUsage::Named(NamedTypeUsage{
name: Identifier{
name: Spanned{
span: Span{left: 0, right: 0}, //todo: figure out a sane value for these
TypeUsage::Named(NamedTypeUsage {
name: Identifier {
name: Spanned {
span: Span { left: 0, right: 0 }, //todo: figure out a sane value for these
value: "!".to_string(),
}
}
},
},
})
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Span {
pub left: usize,
pub right: usize
pub right: usize,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
@@ -50,7 +51,6 @@ pub struct Spanned<T> {
pub value: T,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct FunctionTypeUsage {
pub arguments: Vec<TypeUsage>,
@@ -76,31 +76,33 @@ pub enum TypeUsage {
impl TypeUsage {
pub fn new_unknown(id_gen: &IdGenerator) -> TypeUsage {
return TypeUsage::Unknown(UnknownTypeUsage{
return TypeUsage::Unknown(UnknownTypeUsage {
name: id_gen.next(),
});
}
pub fn new_named(identifier: Identifier) -> TypeUsage {
return TypeUsage::Named(NamedTypeUsage{
return TypeUsage::Named(NamedTypeUsage {
name: identifier.clone(),
});
}
pub fn new_builtin(name: String) -> TypeUsage {
TypeUsage::Named(NamedTypeUsage{
name: Identifier{
name: Spanned{
span: Span{left: 0, right: 0}, //todo: figure out a sane value for these
TypeUsage::Named(NamedTypeUsage {
name: Identifier {
name: Spanned {
span: Span { left: 0, right: 0 }, //todo: figure out a sane value for these
value: name,
}
}
},
},
})
}
pub fn new_function(arg_count: usize, id_gen: &IdGenerator) -> TypeUsage {
return TypeUsage::Function(FunctionTypeUsage{
arguments: (0..arg_count).map(|_| TypeUsage::new_unknown(&id_gen)).collect(),
return TypeUsage::Function(FunctionTypeUsage {
arguments: (0..arg_count)
.map(|_| TypeUsage::new_unknown(&id_gen))
.collect(),
return_type: Box::new(TypeUsage::new_unknown(&id_gen)),
});
}