From 3a1e2316e467c85340f353b47d6fe92a02dc112a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edvard=20Th=C3=B6rnros?= Date: Tue, 12 Jan 2021 19:44:45 +0100 Subject: Fix edge case in for-loop increment statements --- src/compiler.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src/compiler.rs') 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()); -- cgit v1.2.1