From e84d99376ba669c41b38a8750f0b4411ac5d57dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edvard=20Th=C3=B6rnros?= Date: Mon, 18 Jan 2021 20:35:06 +0100 Subject: Typecheck all blocks --- src/lib.rs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index ce8ee51..693fb6c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -21,10 +21,15 @@ pub fn run_string(s: &str, print: bool) -> Result<(), Vec> { pub fn run(tokens: TokenStream, path: &Path, print: bool) -> Result<(), Vec> { match compiler::compile("main", path, tokens) { - Ok(block) => - vm::VM::new().print_blocks(print) - .print_ops(print) - .run(Rc::new(block)).or_else(|e| Err(vec![e])), + Ok(blocks) => { + let mut vm = vm::VM::new().print_blocks(print).print_ops(print); + vm.typecheck(&blocks)?; + if let Err(e) = vm.run(Rc::clone(&blocks[0])) { + Err(vec![e]) + } else { + Ok(()) + } + } Err(errors) => Err(errors), } } -- cgit v1.2.1