Add types for (some) builtins
This commit is contained in:
parent
0dd6b26e5a
commit
6e92b03f81
@ -35,7 +35,33 @@ pub enum Builtin {
|
|||||||
|
|
||||||
impl Builtin {
|
impl Builtin {
|
||||||
pub fn get_type(&self) -> Type {
|
pub fn get_type(&self) -> Type {
|
||||||
ty!(Nat -> Nat -> Nat)
|
use Builtin::*;
|
||||||
|
match self {
|
||||||
|
Add => ty!(Nat -> Nat -> Nat),
|
||||||
|
Subtract => ty!(Nat -> Nat -> Nat),
|
||||||
|
Multiply => ty!(Nat -> Nat -> Nat),
|
||||||
|
Divide => ty!(Nat -> Nat -> Float),
|
||||||
|
Quotient => ty!(Nat -> Nat -> Nat),
|
||||||
|
Modulo => ty!(Nat -> Nat -> Nat),
|
||||||
|
Exponentiation => ty!(Nat -> Nat -> Nat),
|
||||||
|
BitwiseAnd => ty!(Nat -> Nat -> Nat),
|
||||||
|
BitwiseOr => ty!(Nat -> Nat -> Nat),
|
||||||
|
BooleanAnd => ty!(Bool -> Bool -> Bool),
|
||||||
|
BooleanOr => ty!(Bool -> Bool -> Bool),
|
||||||
|
BooleanNot => ty!(Bool -> Bool),
|
||||||
|
Equality => ty!(Nat -> Nat -> Bool),
|
||||||
|
LessThan => ty!(Nat -> Nat -> Bool),
|
||||||
|
LessThanOrEqual => ty!(Nat -> Nat -> Bool),
|
||||||
|
GreaterThan => ty!(Nat -> Nat -> Bool),
|
||||||
|
GreaterThanOrEqual => ty!(Nat -> Nat -> Bool),
|
||||||
|
Comparison => ty!(Nat -> Nat -> Ordering),
|
||||||
|
FieldAccess => ty!(Unit),
|
||||||
|
IOPrint => ty!(Unit),
|
||||||
|
IOPrintLn => ty!(Unit) ,
|
||||||
|
IOGetLine => ty!(StringT),
|
||||||
|
Assignment => ty!(Unit),
|
||||||
|
Concatenate => ty!(StringT -> StringT -> StringT),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user