diff --git a/tvix/eval/src/compiler.rs b/tvix/eval/src/compiler.rs index 5edf83535..cb568bfc6 100644 --- a/tvix/eval/src/compiler.rs +++ b/tvix/eval/src/compiler.rs @@ -850,6 +850,13 @@ impl Compiler { if pops > 0 { self.chunk.push_op(OpCode::OpCloseScope(pops)); } + + while !scope.with_stack.is_empty() + && scope.with_stack[scope.with_stack.len() - 1].depth > scope.scope_depth + { + self.chunk.push_op(OpCode::OpPopWith); + scope.with_stack.pop(); + } } fn push_local>(&mut self, name: S) {