aboutsummaryrefslogtreecommitdiff
path: root/src/ast_render.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2017-05-04 12:43:11 -0400
committerAndrew Kelley <superjoe30@gmail.com>2017-05-04 12:43:11 -0400
commitb6a679c0edd74d996bd0c1769cf4b161b4d42c4d (patch)
treeb9b90568cb38ec6edaa1fa094b8da18575144a08 /src/ast_render.cpp
parent0454e610bf8627537855ce96e922dfbe7322e4a1 (diff)
downloadzig-b6a679c0edd74d996bd0c1769cf4b161b4d42c4d.tar.gz
zig-b6a679c0edd74d996bd0c1769cf4b161b4d42c4d.zip
implement else on loops and break can give an expression
closes #357
Diffstat (limited to 'src/ast_render.cpp')
-rw-r--r--src/ast_render.cpp18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/ast_render.cpp b/src/ast_render.cpp
index 348d825332..e1186da2c4 100644
--- a/src/ast_render.cpp
+++ b/src/ast_render.cpp
@@ -485,6 +485,15 @@ static void render_node_extra(AstRender *ar, AstNode *node, bool grouped) {
}
break;
}
+ case NodeTypeBreak:
+ {
+ fprintf(ar->f, "break");
+ if (node->data.break_expr.expr) {
+ fprintf(ar->f, " ");
+ render_node_grouped(ar, node->data.break_expr.expr);
+ }
+ break;
+ }
case NodeTypeDefer:
{
const char *defer_str = defer_string(node->data.defer.kind);
@@ -880,11 +889,10 @@ static void render_node_extra(AstRender *ar, AstNode *node, bool grouped) {
fprintf(ar->f, "| ");
}
render_node_grouped(ar, node->data.for_expr.body);
- break;
- }
- case NodeTypeBreak:
- {
- fprintf(ar->f, "break");
+ if (node->data.for_expr.else_node) {
+ fprintf(ar->f, " else");
+ render_node_grouped(ar, node->data.for_expr.else_node);
+ }
break;
}
case NodeTypeContinue: