summaryrefslogtreecommitdiff
path: root/src/semantic/types.rs
diff options
context:
space:
mode:
authorDavid Li <li.davidm96@gmail.com>2017-11-06 09:00:14 -0500
committerDavid Li <li.davidm96@gmail.com>2017-11-06 09:00:14 -0500
commit48411d44fd742800348dace427217a9b5727138d (patch)
tree06edd036fcd1b67d3fa5805442a8c0055c7e9140 /src/semantic/types.rs
parent58f30a0ce9e8bb0dde99edcbbaf8e1b7757e2ee6 (diff)
Reimplement checking of variable bindings
Diffstat (limited to 'src/semantic/types.rs')
-rw-r--r--src/semantic/types.rs18
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),
+ }
+ }
}