From a5ad04378db7c0ef98d365f86c9fa7a6903b92b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edvard=20Th=C3=B6rnros?= Date: Sun, 28 Feb 2021 13:49:04 +0100 Subject: return AFTER we call main --- src/compiler.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/compiler.rs') 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())); -- cgit v1.2.1