aboutsummaryrefslogtreecommitdiffstats
path: root/src/compiler.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler.rs')
-rw-r--r--src/compiler.rs9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/compiler.rs b/src/compiler.rs
index 4bb2469..0dfa1a3 100644
--- a/src/compiler.rs
+++ b/src/compiler.rs
@@ -415,7 +415,14 @@ impl Compiler {
expect!(self, Token::Comma, "Expect ',' between initalizer and loop expression.");
let inc = block.curr();
- self.statement(block);
+ {
+ let h = self.stack.len();
+ self.statement(block);
+ for _ in h..self.stack.len() {
+ block.add(Op::Pop, self.line());
+ }
+ self.stack.truncate(h);
+ }
block.add(Op::Jmp(cond), self.line());
// patch_jmp!(Op::Jmp, cond_cont => block.curr());