From 20b1491e6bd87b10e822282c5867604d634973a1 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 4 May 2017 10:18:01 -0400 Subject: implement while for nullables and error unions See #357 --- src/ast_render.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'src/ast_render.cpp') 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: -- cgit v1.2.3