File tree Expand file tree Collapse file tree 1 file changed +4
-1
lines changed
Expand file tree Collapse file tree 1 file changed +4
-1
lines changed Original file line number Diff line number Diff 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,
You can’t perform that action at this time.
0 commit comments