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/main.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/main.rs')
-rw-r--r-- | src/main.rs | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs index b539ebbb3d99..d5b00d6b6c46 100644 --- a/src/main.rs +++ b/src/main.rs @@ -8,6 +8,7 @@ pub mod compiler; pub mod interpreter; #[macro_use] pub mod parser; +pub mod tc; pub use common::{Error, Result}; @@ -21,6 +22,7 @@ struct Opts { enum Command { Eval(commands::Eval), Compile(commands::Compile), + Check(commands::Check), } fn main() -> anyhow::Result<()> { @@ -28,5 +30,6 @@ fn main() -> anyhow::Result<()> { match opts.subcommand { Command::Eval(eval) => Ok(eval.run()?), Command::Compile(compile) => Ok(compile.run()?), + Command::Check(check) => Ok(check.run()?), } } |