From 2d901e4c6189f86df3272abd40ada4e5fdbdb24a Mon Sep 17 00:00:00 2001 From: Dennis Ranke Date: Tue, 2 Nov 2021 00:03:34 +0100 Subject: [PATCH] fix branches inside if --- .gitignore | 1 + src/emit.rs | 2 ++ 2 files changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index f7c98f0..8cb5e1e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ /target .cargo/ *.wasm +*.uw8 *.lua* diff --git a/src/emit.rs b/src/emit.rs index 7cb8715..b172b61 100644 --- a/src/emit.rs +++ b/src/emit.rs @@ -475,6 +475,7 @@ fn emit_expression<'a>(ctx: &mut FunctionContext<'a>, expr: &'a ast::Expression) emit_expression(ctx, condition); ctx.function .instruction(&Instruction::If(map_block_type(expr.type_))); + ctx.labels.push(String::new()); emit_expression(ctx, if_true); if if_true.type_.is_some() && if_true.type_ != expr.type_ { ctx.function.instruction(&Instruction::Drop); @@ -486,6 +487,7 @@ fn emit_expression<'a>(ctx: &mut FunctionContext<'a>, expr: &'a ast::Expression) ctx.function.instruction(&Instruction::Drop); } } + ctx.labels.pop(); ctx.function.instruction(&Instruction::End); } ast::Expr::Return { value } => {