diff --git a/examples/call3.rs b/examples/call3.rs index d8d8f6c6c5a9d91f275f7dce001ce3c9984b12b0..daa691dae21c4e869b563237874bf1dc938efd51 100644 --- a/examples/call3.rs +++ b/examples/call3.rs @@ -1,5 +1,5 @@ fn f(mut x: i32, mut y: i32) -> i32 { - x = x + 1; // mutable paramer + x = x + 1; // mutable parameter x + y } diff --git a/src/ast.rs b/src/ast.rs index 444e6323b0a7eee47afc2d2fb3bca3e5859f3c7d..e2ccc47f7241d415a3bbc8640f6123a447cf61c4 100644 --- a/src/ast.rs +++ b/src/ast.rs @@ -36,6 +36,7 @@ pub enum Stmt { Expr(Box<Expr>), // perhaps block should be expression, hmm everything is expressions? Block(Stmts), + Semi, } #[derive(Debug, PartialEq, Clone)] @@ -213,13 +214,13 @@ impl Stmts { fn ifmt(&self, fmt: &mut Formatter, indent: usize) -> Result<(), Error> { write!(fmt, "{{")?; let len = self.stmts.len(); - for (i, s) in (&self.stmts).into_iter().enumerate() { + for (_i, s) in (&self.stmts).into_iter().enumerate() { // set tab write!(fmt, "\n{}", " ".repeat(indent + 4))?; s.ifmt(fmt, indent + 4)?; - if i < len - 1 || self.ret { - write!(fmt, ";")?; - } + // if i < len - 1 || self.ret { + // write!(fmt, ";")?; + // } } write!(fmt, "\n{}}}", " ".repeat(indent)) } @@ -260,6 +261,7 @@ impl Stmt { Ok(()) } Stmt::Expr(e) => write!(fmt, "{}", e), + Stmt::Semi => write!(fmt, ";"), } } } diff --git a/src/check.rs b/src/check.rs index 18d567543835c534b225eeaad6d535c8e5f4a9bb..b8fb4a5b3819bbd6264a666cf9b0e8ee50206fd4 100644 --- a/src/check.rs +++ b/src/check.rs @@ -361,6 +361,7 @@ pub fn check_stmts( } _ => Err("Condition not Boolean".to_string()), }, + Semi => panic!("ICE"), } })?; diff --git a/src/vm.rs b/src/vm.rs index a1d29ba9db7aae6d11f3844165cf8f57ce52ae64..6c53c48f03b1e9cfd190ae73b0236097729f58d5 100644 --- a/src/vm.rs +++ b/src/vm.rs @@ -286,6 +286,7 @@ fn eval_stmts(stmts: &Stmts, m: &mut Mem, fn_env: &FnEnv) -> Val { println!("block"); eval_stmts(block, m, fn_env) } + Stmt::Semi => panic!("ICE"), } } m.pop_scope();