diff options
| -rw-r--r-- | src/compiler.rs | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/compiler.rs b/src/compiler.rs index 56a1d44..f4c369f 100644 --- a/src/compiler.rs +++ b/src/compiler.rs @@ -1743,9 +1743,6 @@ impl<'a> Compiler<'a> { "Expect newline or EOF after expression."); } } - let tmp = self.add_constant(Value::Unknown); - add_op(self, &mut block, Op::Constant(tmp)); - add_op(self, &mut block, Op::Return); block.ty = Type::Function(Vec::new(), Box::new(Type::Void)); if self.names.len() != 0 { @@ -1766,6 +1763,10 @@ impl<'a> Compiler<'a> { add_op(self, &mut block, Op::Constant(constant)); add_op(self, &mut block, Op::Call(0)); + let tmp = self.add_constant(Value::Unknown); + add_op(self, &mut block, Op::Constant(tmp)); + add_op(self, &mut block, Op::Return); + for var in self.current_context_mut().pop().unwrap().stack.iter().skip(1) { if !(var.read || var.upvalue) { let e = ErrorKind::SyntaxError(var.line, Token::Identifier(var.name.clone())); |
