aboutsummaryrefslogtreecommitdiff
path: root/src/ast_render.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2016-02-05 23:20:34 -0700
committerAndrew Kelley <superjoe30@gmail.com>2016-02-05 23:20:34 -0700
commit6a2ede5a6eb17d6b86e6636457710a3583376fa3 (patch)
tree5d0968960e8c37e325de3f78d7c1cb86533bdd05 /src/ast_render.cpp
parent4339d555626197f4b8c9598b602f098b76488c2d (diff)
downloadzig-6a2ede5a6eb17d6b86e6636457710a3583376fa3.tar.gz
zig-6a2ede5a6eb17d6b86e6636457710a3583376fa3.zip
parsing code for defer and more
* disable goto and label support see #44 * refactor the way block contexts work
Diffstat (limited to 'src/ast_render.cpp')
-rw-r--r--src/ast_render.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/ast_render.cpp b/src/ast_render.cpp
index c4268d01c5..917c61c51c 100644
--- a/src/ast_render.cpp
+++ b/src/ast_render.cpp
@@ -122,6 +122,8 @@ static const char *node_type_str(NodeType node_type) {
return "Directive";
case NodeTypeReturnExpr:
return "ReturnExpr";
+ case NodeTypeDeferExpr:
+ return "DeferExpr";
case NodeTypeVariableDeclaration:
return "VariableDeclaration";
case NodeTypeTypeDecl:
@@ -259,6 +261,14 @@ void ast_print(FILE *f, AstNode *node, int indent) {
ast_print(f, node->data.return_expr.expr, indent + 2);
break;
}
+ case NodeTypeDeferExpr:
+ {
+ const char *prefix_str = return_prefix_str(node->data.defer_expr.kind);
+ fprintf(f, "%s%s\n", prefix_str, node_type_str(node->type));
+ if (node->data.defer_expr.expr)
+ ast_print(f, node->data.defer_expr.expr, indent + 2);
+ break;
+ }
case NodeTypeVariableDeclaration:
{
Buf *name_buf = &node->data.variable_declaration.symbol;
@@ -620,6 +630,8 @@ static void render_node(AstRender *ar, AstNode *node) {
break;
case NodeTypeReturnExpr:
zig_panic("TODO");
+ case NodeTypeDeferExpr:
+ zig_panic("TODO");
case NodeTypeVariableDeclaration:
{
const char *pub_str = visib_mod_string(node->data.variable_declaration.visib_mod);