aboutsummaryrefslogtreecommitdiff
path: root/src/ir.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2018-02-26 00:04:11 -0500
committerAndrew Kelley <superjoe30@gmail.com>2018-02-26 00:04:11 -0500
commitc60496a297a0d4c53ad0e22850ad62b0b4a2d841 (patch)
tree821fd1f0399d8d013acba645a9f54df6914adad7 /src/ir.cpp
parent6fef7406c80d6db26513a6ae53f9c44444bef1f2 (diff)
downloadzig-c60496a297a0d4c53ad0e22850ad62b0b4a2d841.tar.gz
zig-c60496a297a0d4c53ad0e22850ad62b0b4a2d841.zip
parse await and suspend syntax
See #727
Diffstat (limited to 'src/ir.cpp')
-rw-r--r--src/ir.cpp20
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();
}