Skip to content
Snippets Groups Projects
Commit 2f1cb57d authored by Per Lindgren's avatar Per Lindgren
Browse files

prepare for semi change

parent 990d4f0f
No related branches found
No related tags found
No related merge requests found
fn f(mut x: i32, mut y: i32) -> i32 { fn f(mut x: i32, mut y: i32) -> i32 {
x = x + 1; // mutable paramer x = x + 1; // mutable parameter
x + y x + y
} }
......
...@@ -36,6 +36,7 @@ pub enum Stmt { ...@@ -36,6 +36,7 @@ pub enum Stmt {
Expr(Box<Expr>), Expr(Box<Expr>),
// perhaps block should be expression, hmm everything is expressions? // perhaps block should be expression, hmm everything is expressions?
Block(Stmts), Block(Stmts),
Semi,
} }
#[derive(Debug, PartialEq, Clone)] #[derive(Debug, PartialEq, Clone)]
...@@ -213,13 +214,13 @@ impl Stmts { ...@@ -213,13 +214,13 @@ impl Stmts {
fn ifmt(&self, fmt: &mut Formatter, indent: usize) -> Result<(), Error> { fn ifmt(&self, fmt: &mut Formatter, indent: usize) -> Result<(), Error> {
write!(fmt, "{{")?; write!(fmt, "{{")?;
let len = self.stmts.len(); 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 // set tab
write!(fmt, "\n{}", " ".repeat(indent + 4))?; write!(fmt, "\n{}", " ".repeat(indent + 4))?;
s.ifmt(fmt, indent + 4)?; s.ifmt(fmt, indent + 4)?;
if i < len - 1 || self.ret { // if i < len - 1 || self.ret {
write!(fmt, ";")?; // write!(fmt, ";")?;
} // }
} }
write!(fmt, "\n{}}}", " ".repeat(indent)) write!(fmt, "\n{}}}", " ".repeat(indent))
} }
...@@ -260,6 +261,7 @@ impl Stmt { ...@@ -260,6 +261,7 @@ impl Stmt {
Ok(()) Ok(())
} }
Stmt::Expr(e) => write!(fmt, "{}", e), Stmt::Expr(e) => write!(fmt, "{}", e),
Stmt::Semi => write!(fmt, ";"),
} }
} }
} }
......
...@@ -361,6 +361,7 @@ pub fn check_stmts( ...@@ -361,6 +361,7 @@ pub fn check_stmts(
} }
_ => Err("Condition not Boolean".to_string()), _ => Err("Condition not Boolean".to_string()),
}, },
Semi => panic!("ICE"),
} }
})?; })?;
......
...@@ -286,6 +286,7 @@ fn eval_stmts(stmts: &Stmts, m: &mut Mem, fn_env: &FnEnv) -> Val { ...@@ -286,6 +286,7 @@ fn eval_stmts(stmts: &Stmts, m: &mut Mem, fn_env: &FnEnv) -> Val {
println!("block"); println!("block");
eval_stmts(block, m, fn_env) eval_stmts(block, m, fn_env)
} }
Stmt::Semi => panic!("ICE"),
} }
} }
m.pop_scope(); m.pop_scope();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment