aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/typer.rs11
1 files changed, 2 insertions, 9 deletions
diff --git a/src/typer.rs b/src/typer.rs
index 7040bb2..59eefe8 100644
--- a/src/typer.rs
+++ b/src/typer.rs
@@ -67,13 +67,13 @@ impl VM {
fn pop_twice(&mut self) -> (Type, Type) {
let len = self.stack.len();
- let res = (self.stack[len-2].clone(), self.stack[len-1].clone());
+ let res = (self.stack[len - 2].clone(), self.stack[len - 1].clone());
self.stack.truncate(len - 2);
res
}
fn peek_up(&self, amount: usize) -> Type {
- self.stack[self.stack.len() - amount].clone()
+ self.stack[self.stack.len() - 1 - amount].clone()
}
fn frame(&self) -> &Frame {
@@ -300,13 +300,6 @@ impl VM {
return Ok(());
}
- match self.frame().block.ops[self.frame().ip - 2] {
- Op::Return => {
- continue;
- }
- _ => {}
- }
-
let a = self.stack.pop().unwrap_or(Type::NoType);
if a != return_type {
error!(self, ErrorKind::TypeError(op, vec![a, return_type.clone()]), "Not matching return type.");