diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2017-05-04 10:18:01 -0400 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2017-05-04 10:28:00 -0400 |
| commit | 20b1491e6bd87b10e822282c5867604d634973a1 (patch) | |
| tree | 0ca98f3cbac3ca3dd9f5a755e059964e374eea0a /src/ast_render.cpp | |
| parent | 698829b772fe39c4311a75b20324256b8d7392b1 (diff) | |
| download | zig-20b1491e6bd87b10e822282c5867604d634973a1.tar.gz zig-20b1491e6bd87b10e822282c5867604d634973a1.zip | |
implement while for nullables and error unions
See #357
Diffstat (limited to 'src/ast_render.cpp')
| -rw-r--r-- | src/ast_render.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/ast_render.cpp b/src/ast_render.cpp index 902891b5a2..348d825332 100644 --- a/src/ast_render.cpp +++ b/src/ast_render.cpp @@ -725,12 +725,23 @@ static void render_node_extra(AstRender *ar, AstNode *node, bool grouped) { const char *inline_str = node->data.while_expr.is_inline ? "inline " : ""; fprintf(ar->f, "%swhile (", inline_str); render_node_grouped(ar, node->data.while_expr.condition); + fprintf(ar->f, ") "); + if (node->data.while_expr.var_symbol) { + fprintf(ar->f, "|%s| ", buf_ptr(node->data.while_expr.var_symbol)); + } if (node->data.while_expr.continue_expr) { - fprintf(ar->f, "; "); + fprintf(ar->f, ": ("); render_node_grouped(ar, node->data.while_expr.continue_expr); + fprintf(ar->f, ") "); } - fprintf(ar->f, ") "); render_node_grouped(ar, node->data.while_expr.body); + if (node->data.while_expr.else_node) { + fprintf(ar->f, " else "); + if (node->data.while_expr.err_symbol) { + fprintf(ar->f, "|%s| ", buf_ptr(node->data.while_expr.err_symbol)); + } + render_node_grouped(ar, node->data.while_expr.else_node); + } break; } case NodeTypeThisLiteral: |
