Skip to content

Commit e1ee435

Browse files
committed
wip: issue/88
1 parent b175780 commit e1ee435

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

crates/lean_compiler/src/b_compile_intermediate.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,6 @@ fn compile_lines(
212212
}
213213

214214
SimpleLine::Match { value, arms } => {
215-
let saved_stack_pos = compiler.stack_pos;
216215
compiler.stack_frame_layout.scopes.push(ScopeLayout::default());
217216

218217
let match_index = compiler.match_blocks.len();
@@ -221,6 +220,8 @@ fn compile_lines(
221220
let value_simplified = IntermediateValue::from_simple_expr(value, compiler);
222221

223222
let mut compiled_arms = vec![];
223+
let saved_stack_pos = compiler.stack_pos;
224+
let mut new_stack_pos = saved_stack_pos;
224225
for (i, arm) in arms.iter().enumerate() {
225226
let mut arm_declared_vars = declared_vars.clone();
226227
compiler.stack_pos = saved_stack_pos;
@@ -237,7 +238,9 @@ fn compile_lines(
237238
} else {
238239
declared_vars.intersection(&arm_declared_vars).cloned().collect()
239240
};
241+
new_stack_pos = new_stack_pos.max(compiler.stack_pos);
240242
}
243+
compiler.stack_pos = new_stack_pos;
241244
compiler.match_blocks.push(MatchBlock {
242245
function_name: function_name.clone(),
243246
match_cases: compiled_arms,

0 commit comments

Comments
 (0)