diff options
Diffstat (limited to 'src/semantic/types.rs')
-rw-r--r-- | src/semantic/types.rs | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/semantic/types.rs b/src/semantic/types.rs index 3e31b04..af6c971 100644 --- a/src/semantic/types.rs +++ b/src/semantic/types.rs @@ -1,7 +1,23 @@ -#[derive(Clone,Copy,Debug)] +#[derive(Clone,Debug,Eq,PartialEq)] pub enum Ty { Int, String, Nil, Unit, + Record(Vec<RecordField>), +} + +#[derive(Clone,Debug,Eq,PartialEq)] +pub struct RecordField { + name: String, + ty: Box<Ty>, +} + +impl RecordField { + pub fn new(name: String, ty: Ty) -> RecordField { + RecordField { + name: name, + ty: Box::new(ty), + } + } } |