diff options
author | David Li <li.davidm96@gmail.com> | 2017-11-06 09:00:14 -0500 |
---|---|---|
committer | David Li <li.davidm96@gmail.com> | 2017-11-06 09:00:14 -0500 |
commit | 48411d44fd742800348dace427217a9b5727138d (patch) | |
tree | 06edd036fcd1b67d3fa5805442a8c0055c7e9140 /src/semantic/types.rs | |
parent | 58f30a0ce9e8bb0dde99edcbbaf8e1b7757e2ee6 (diff) |
Reimplement checking of variable bindings
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), + } + } } |