aboutsummaryrefslogtreecommitdiff
path: root/src/stage1/ir.cpp
diff options
context:
space:
mode:
authorLemonBoy <thatlemon@gmail.com>2021-04-24 10:20:16 +0200
committerLemonBoy <thatlemon@gmail.com>2021-04-24 10:25:43 +0200
commit0aede1a8fcd59b259215c05b43827405ad5da9c7 (patch)
tree43960fe9fd1a0c2c12cb0146b4fe5d6473f0ea31 /src/stage1/ir.cpp
parent4ec6d174adc038741f1274d157f5253752eb8d51 (diff)
downloadzig-0aede1a8fcd59b259215c05b43827405ad5da9c7.tar.gz
zig-0aede1a8fcd59b259215c05b43827405ad5da9c7.zip
stage1: Require a block after suspend
Closes #8603
Diffstat (limited to 'src/stage1/ir.cpp')
-rw-r--r--src/stage1/ir.cpp16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/stage1/ir.cpp b/src/stage1/ir.cpp
index 61a1345327..c59f63399c 100644
--- a/src/stage1/ir.cpp
+++ b/src/stage1/ir.cpp
@@ -9534,7 +9534,7 @@ static IrInstSrc *ir_gen_nosuspend(IrBuilderSrc *irb, Scope *parent_scope, AstNo
Scope *child_scope = create_nosuspend_scope(irb->codegen, node, parent_scope);
// purposefully pass null for result_loc and let EndExpr handle it
- return ir_gen_node_extra(irb, node->data.comptime_expr.expr, child_scope, lval, nullptr);
+ return ir_gen_node_extra(irb, node->data.nosuspend_expr.expr, child_scope, lval, nullptr);
}
static IrInstSrc *ir_gen_return_from_block(IrBuilderSrc *irb, Scope *break_scope, AstNode *node, ScopeBlock *block_scope) {
@@ -10199,14 +10199,12 @@ static IrInstSrc *ir_gen_suspend(IrBuilderSrc *irb, Scope *parent_scope, AstNode
}
IrInstSrcSuspendBegin *begin = ir_build_suspend_begin_src(irb, parent_scope, node);
- if (node->data.suspend.block != nullptr) {
- ScopeSuspend *suspend_scope = create_suspend_scope(irb->codegen, node, parent_scope);
- Scope *child_scope = &suspend_scope->base;
- IrInstSrc *susp_res = ir_gen_node(irb, node->data.suspend.block, child_scope);
- if (susp_res == irb->codegen->invalid_inst_src)
- return irb->codegen->invalid_inst_src;
- ir_mark_gen(ir_build_check_statement_is_void(irb, child_scope, node->data.suspend.block, susp_res));
- }
+ ScopeSuspend *suspend_scope = create_suspend_scope(irb->codegen, node, parent_scope);
+ Scope *child_scope = &suspend_scope->base;
+ IrInstSrc *susp_res = ir_gen_node(irb, node->data.suspend.block, child_scope);
+ if (susp_res == irb->codegen->invalid_inst_src)
+ return irb->codegen->invalid_inst_src;
+ ir_mark_gen(ir_build_check_statement_is_void(irb, child_scope, node->data.suspend.block, susp_res));
return ir_mark_gen(ir_build_suspend_finish_src(irb, parent_scope, node, begin));
}