authorgravatar for kt@connectfree.co.jpkristopher tate <kt@connectfree.co.jp> 2018-07-28 15:23:09+09:00
committergravatar for kt@connectfree.co.jpkristopher tate <kt@connectfree.co.jp> 2018-08-02 16:50:08+09:00
logc1a3b0cb0af3c0639ce09b2a17a3cc90977346fe
tree14e5dafe980129865632a0f411acb93187b984b8
parentdb362bec185d2eeb5a4dd018deb2a988479f0f1a

src/ir.cpp: add/throw error for @handle() in a non async context;

Tracking Issue #1296 ; Thanks @andrewrk ;

1 files changed, 6 insertions(+), 0 deletions(-)

src/ir.cpp+6
...@@ -3858,6 +3858,8 @@ static IrInstruction *ir_gen_builtin_fn_call(IrBuilder *irb, Scope *scope, AstNo...@@ -3858,6 +3858,8 @@ static IrInstruction *ir_gen_builtin_fn_call(IrBuilder *irb, Scope *scope, AstNo
3858 return irb->codegen->invalid_instruction;3858 return irb->codegen->invalid_instruction;
3859 }3859 }
38603860
3861 bool is_async = exec_is_async(irb->exec);
3862
3861 switch (builtin_fn->id) {3863 switch (builtin_fn->id) {
3862 case BuiltinFnIdInvalid:3864 case BuiltinFnIdInvalid:
3863 zig_unreachable();3865 zig_unreachable();
...@@ -4491,6 +4493,10 @@ static IrInstruction *ir_gen_builtin_fn_call(IrBuilder *irb, Scope *scope, AstNo...@@ -4491,6 +4493,10 @@ static IrInstruction *ir_gen_builtin_fn_call(IrBuilder *irb, Scope *scope, AstNo
4491 case BuiltinFnIdFrameAddress:4493 case BuiltinFnIdFrameAddress:
4492 return ir_lval_wrap(irb, scope, ir_build_frame_address(irb, scope, node), lval);4494 return ir_lval_wrap(irb, scope, ir_build_frame_address(irb, scope, node), lval);
4493 case BuiltinFnIdHandle:4495 case BuiltinFnIdHandle:
4496 if (!is_async) {
4497 add_node_error(irb->codegen, node, buf_sprintf("@handle() in non-async function"));
4498 return irb->codegen->invalid_instruction;
4499 }
4494 return ir_lval_wrap(irb, scope, ir_build_handle(irb, scope, node), lval);4500 return ir_lval_wrap(irb, scope, ir_build_handle(irb, scope, node), lval);
4495 case BuiltinFnIdAlignOf:4501 case BuiltinFnIdAlignOf:
4496 {4502 {