From 2f1cb57ddd36f6916c0865d3982e845c07f0b0b3 Mon Sep 17 00:00:00 2001 From: Per Lindgren <per.lindgren@ltu.se> Date: Sun, 20 Sep 2020 08:42:33 +0200 Subject: [PATCH] prepare for semi change --- examples/call3.rs | 2 +- src/ast.rs | 10 ++++++---- src/check.rs | 1 + src/vm.rs | 1 + 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/examples/call3.rs b/examples/call3.rs index d8d8f6c..daa691d 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 444e632..e2ccc47 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 18d5675..b8fb4a5 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 a1d29ba..6c53c48 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(); -- GitLab