aboutsummaryrefslogtreecommitdiffstats
path: root/src/compiler.rs
diff options
context:
space:
mode:
authorEdvard Thörnros <edvard.thornros@gmail.com>2021-02-28 13:49:04 +0100
committerEdvard Thörnros <edvard.thornros@gmail.com>2021-02-28 13:49:23 +0100
commita5ad04378db7c0ef98d365f86c9fa7a6903b92b9 (patch)
tree66255aea9f8c01483a79ccf28453ebeaaa0257f3 /src/compiler.rs
parentbd703c481822d0c3bf310a226e6a12b9579238e4 (diff)
downloadsylt-a5ad04378db7c0ef98d365f86c9fa7a6903b92b9.tar.gz
return AFTER we call main
Diffstat (limited to 'src/compiler.rs')
-rw-r--r--src/compiler.rs7
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()));