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/codegen/mod.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/codegen/mod.rs')
-rw-r--r-- | src/codegen/mod.rs | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs index 6f95d90b45a1..8ef057dba04f 100644 --- a/src/codegen/mod.rs +++ b/src/codegen/mod.rs @@ -4,10 +4,11 @@ use inkwell::execution_engine::JitFunction; use inkwell::OptimizationLevel; pub use llvm::*; -use crate::ast::Expr; +use crate::ast::hir::Expr; +use crate::ast::Type; use crate::common::Result; -pub fn jit_eval<T>(expr: &Expr) -> Result<T> { +pub fn jit_eval<T>(expr: &Expr<Type>) -> Result<T> { let context = Context::create(); let mut codegen = Codegen::new(&context, "eval"); let execution_engine = codegen |