diff options
author | Griffin Smith <root@gws.fyi> | 2021-03-14T02·57-0500 |
---|---|---|
committer | Griffin Smith <root@gws.fyi> | 2021-03-14T03·07-0500 |
commit | 32a5c0ff0fc58aa6721c1e0ad41950bde2d66744 (patch) | |
tree | ef5dcf5234c2a86607ee2f8f30db73bad016e075 /src/interpreter/value.rs | |
parent | f8beda81fbe8d04883aee71ff4ea078f897c6de4 (diff) |
Add the start of a hindley-milner typechecker
The beginning of a parse-don't-validate-based hindley-milner typechecker, which returns on success an IR where every AST node trivially knows its own type, and using those types to determine LLVM types in codegen.
Diffstat (limited to 'src/interpreter/value.rs')
-rw-r--r-- | src/interpreter/value.rs | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/interpreter/value.rs b/src/interpreter/value.rs index 496e9c4230de..5e55825160cd 100644 --- a/src/interpreter/value.rs +++ b/src/interpreter/value.rs @@ -6,13 +6,14 @@ use std::rc::Rc; use derive_more::{Deref, From, TryInto}; use super::{Error, Result}; -use crate::ast::{Expr, FunctionType, Ident, Type}; +use crate::ast::hir::Expr; +use crate::ast::{FunctionType, Ident, Type}; #[derive(Debug, Clone)] pub struct Function<'a> { pub type_: FunctionType, pub args: Vec<Ident<'a>>, - pub body: Expr<'a>, + pub body: Expr<'a, Type>, } #[derive(From, TryInto)] |