aboutsummaryrefslogtreecommitdiff
path: root/src/ast_render.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/ast_render.cpp
parent6fef7406c80d6db26513a6ae53f9c44444bef1f2 (diff)
downloadzig-c60496a297a0d4c53ad0e22850ad62b0b4a2d841.tar.gz
zig-c60496a297a0d4c53ad0e22850ad62b0b4a2d841.zip
parse await and suspend syntax
See #727
Diffstat (limited to 'src/ast_render.cpp')
-rw-r--r--src/ast_render.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/ast_render.cpp b/src/ast_render.cpp
index eec4b996a0..5f3e1998fd 100644
--- a/src/ast_render.cpp
+++ b/src/ast_render.cpp
@@ -246,6 +246,10 @@ static const char *node_type_str(NodeType node_type) {
return "ErrorSetDecl";
case NodeTypeCancel:
return "Cancel";
+ case NodeTypeAwaitExpr:
+ return "AwaitExpr";
+ case NodeTypeSuspend:
+ return "Suspend";
}
zig_unreachable();
}
@@ -1045,6 +1049,23 @@ static void render_node_extra(AstRender *ar, AstNode *node, bool grouped) {
render_node_grouped(ar, node->data.cancel_expr.expr);
break;
}
+ case NodeTypeAwaitExpr:
+ {
+ fprintf(ar->f, "await ");
+ render_node_grouped(ar, node->data.await_expr.expr);
+ break;
+ }
+ case NodeTypeSuspend:
+ {
+ fprintf(ar->f, "suspend");
+ if (node->data.suspend.block != nullptr) {
+ fprintf(ar->f, " |");
+ render_node_grouped(ar, node->data.suspend.promise_symbol);
+ fprintf(ar->f, "| ");
+ render_node_grouped(ar, node->data.suspend.block);
+ }
+ break;
+ }
case NodeTypeFnDecl:
case NodeTypeParamDecl:
case NodeTypeTestDecl: