diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2018-02-26 00:04:11 -0500 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2018-02-26 00:04:11 -0500 |
| commit | c60496a297a0d4c53ad0e22850ad62b0b4a2d841 (patch) | |
| tree | 821fd1f0399d8d013acba645a9f54df6914adad7 /src/ir.cpp | |
| parent | 6fef7406c80d6db26513a6ae53f9c44444bef1f2 (diff) | |
| download | zig-c60496a297a0d4c53ad0e22850ad62b0b4a2d841.tar.gz zig-c60496a297a0d4c53ad0e22850ad62b0b4a2d841.zip | |
parse await and suspend syntax
See #727
Diffstat (limited to 'src/ir.cpp')
| -rw-r--r-- | src/ir.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/ir.cpp b/src/ir.cpp index 70a099f7c4..7ed66b92bd 100644 --- a/src/ir.cpp +++ b/src/ir.cpp @@ -5834,6 +5834,22 @@ static IrInstruction *ir_gen_cancel(IrBuilder *irb, Scope *parent_scope, AstNode return ir_build_cancel(irb, parent_scope, node, target_inst); } +static IrInstruction *ir_gen_await_expr(IrBuilder *irb, Scope *parent_scope, AstNode *node) { + assert(node->type == NodeTypeAwaitExpr); + + IrInstruction *target_inst = ir_gen_node(irb, node->data.await_expr.expr, parent_scope); + if (target_inst == irb->codegen->invalid_instruction) + return irb->codegen->invalid_instruction; + + zig_panic("TODO: generate await expr"); +} + +static IrInstruction *ir_gen_suspend(IrBuilder *irb, Scope *parent_scope, AstNode *node) { + assert(node->type == NodeTypeSuspend); + + zig_panic("TODO: generate suspend"); +} + static IrInstruction *ir_gen_node_raw(IrBuilder *irb, AstNode *node, Scope *scope, LVal lval) { @@ -5932,6 +5948,10 @@ static IrInstruction *ir_gen_node_raw(IrBuilder *irb, AstNode *node, Scope *scop return ir_lval_wrap(irb, scope, ir_gen_err_set_decl(irb, scope, node), lval); case NodeTypeCancel: return ir_lval_wrap(irb, scope, ir_gen_cancel(irb, scope, node), lval); + case NodeTypeAwaitExpr: + return ir_lval_wrap(irb, scope, ir_gen_await_expr(irb, scope, node), lval); + case NodeTypeSuspend: + return ir_lval_wrap(irb, scope, ir_gen_suspend(irb, scope, node), lval); } zig_unreachable(); } |
