summaryrefslogtreecommitdiff
path: root/src/ast.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/ast.rs')
-rw-r--r--src/ast.rs18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/ast.rs b/src/ast.rs
index d9ce406..8b93e34 100644
--- a/src/ast.rs
+++ b/src/ast.rs
@@ -118,7 +118,9 @@ pub enum DeclarationBody {
ty: WithLocation<Ty>,
},
Fun {
- ty: Box<WithLocation<Ty>>,
+ ty: Option<WithLocation<Ty>>,
+ params: Vec<WithLocation<RecordField>>,
+ body: Box<WithLocation<Expression>>,
},
}
@@ -142,4 +144,18 @@ impl Declaration {
}
}
}
+
+ pub fn new_fun(name: WithLocation<String>,
+ params: Vec<WithLocation<RecordField>>,
+ type_: Option<WithLocation<Ty>>,
+ body: Box<WithLocation<Expression>>) -> Declaration {
+ Declaration {
+ name: name,
+ declaration: DeclarationBody::Fun {
+ ty: type_,
+ params: params,
+ body: body,
+ }
+ }
+ }
}