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