diff options
| author | Edvard Thörnros <edvard.thornros@gmail.com> | 2021-01-30 09:57:50 +0100 |
|---|---|---|
| committer | Edvard Thörnros <edvard.thornros@gmail.com> | 2021-01-30 22:35:24 +0100 |
| commit | 0ee58ee676945f9a652690f490936080ab5a0623 (patch) | |
| tree | d505ba741181a50bd07eaa6e2c086edd19b50649 /src/compiler.rs | |
| parent | 7f21946126a24c27a324779823a3413679f177a0 (diff) | |
| download | sylt-0ee58ee676945f9a652690f490936080ab5a0623.tar.gz | |
fix closures in closure bug
Diffstat (limited to 'src/compiler.rs')
| -rw-r--r-- | src/compiler.rs | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/compiler.rs b/src/compiler.rs index 347abe6..92bf3fc 100644 --- a/src/compiler.rs +++ b/src/compiler.rs @@ -472,6 +472,9 @@ impl Compiler { let mut return_type = Type::Void; let mut function_block = Block::new(&name, &self.current_file, self.line()); + let block_id = self.blocks.len(); + self.blocks.push(Rc::new(RefCell::new(Block::new(&name, &self.current_file, self.line())))); + let _ret = push_frame!(self, function_block, { loop { match self.peek() { @@ -538,8 +541,8 @@ impl Compiler { let func = Op::Constant(Value::Function(Vec::new(), Rc::clone(&function_block))); + self.blocks[block_id] = function_block; block.add(func, self.line()); - self.blocks.push(function_block); } fn variable_expression(&mut self, block: &mut Block) { |
