diff options
| author | Edvard Thörnros <edvard.thornros@gmail.com> | 2021-02-28 13:49:04 +0100 |
|---|---|---|
| committer | Edvard Thörnros <edvard.thornros@gmail.com> | 2021-02-28 13:49:23 +0100 |
| commit | a5ad04378db7c0ef98d365f86c9fa7a6903b92b9 (patch) | |
| tree | 66255aea9f8c01483a79ccf28453ebeaaa0257f3 | |
| parent | bd703c481822d0c3bf310a226e6a12b9579238e4 (diff) | |
| download | sylt-a5ad04378db7c0ef98d365f86c9fa7a6903b92b9.tar.gz | |
return AFTER we call main
| -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())); |
