zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit c1a3b0cb0af3c0639ce09b2a17a3cc90977346fe (tree)
parent db362bec185d2eeb5a4dd018deb2a988479f0f1a
Author: kristopher tate <kt@connectfree.co.jp>
Date:   Sat, 28 Jul 2018 15:23:09 +0900

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

Tracking Issue #1296 ;
Thanks @andrewrk ;

Diffstat:
Msrc/ir.cpp | 6++++++
1 file changed, 6 insertions(+), 0 deletions(-)

diff --git a/src/ir.cpp b/src/ir.cpp @@ -3858,6 +3858,8 @@ static IrInstruction *ir_gen_builtin_fn_call(IrBuilder *irb, Scope *scope, AstNo return irb->codegen->invalid_instruction; } + bool is_async = exec_is_async(irb->exec); + switch (builtin_fn->id) { case BuiltinFnIdInvalid: zig_unreachable(); @@ -4491,6 +4493,10 @@ static IrInstruction *ir_gen_builtin_fn_call(IrBuilder *irb, Scope *scope, AstNo case BuiltinFnIdFrameAddress: return ir_lval_wrap(irb, scope, ir_build_frame_address(irb, scope, node), lval); case BuiltinFnIdHandle: + if (!is_async) { + add_node_error(irb->codegen, node, buf_sprintf("@handle() in non-async function")); + return irb->codegen->invalid_instruction; + } return ir_lval_wrap(irb, scope, ir_build_handle(irb, scope, node), lval); case BuiltinFnIdAlignOf: {