From 71d95c6597bbca6ef44ba8a2a401c28c19a32bbb Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Mon, 21 Nov 2016 03:08:24 -0500 Subject: IR: support unwrap maybe operation --- src/ast_render.cpp | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'src/ast_render.cpp') diff --git a/src/ast_render.cpp b/src/ast_render.cpp index 3060670841..37950b3b46 100644 --- a/src/ast_render.cpp +++ b/src/ast_render.cpp @@ -706,6 +706,27 @@ static void render_node_extra(AstRender *ar, AstNode *node, bool grouped) { fprintf(ar->f, "null"); break; } + case NodeTypeIfVarExpr: + { + AstNodeVariableDeclaration *var_decl = &node->data.if_var_expr.var_decl; + const char *var_str = var_decl->is_const ? "const" : "var"; + const char *var_name = buf_ptr(var_decl->symbol); + const char *ptr_str = node->data.if_var_expr.var_is_ptr ? "*" : ""; + fprintf(ar->f, "if (%s %s%s", var_str, ptr_str, var_name); + if (var_decl->type) { + fprintf(ar->f, ": "); + render_node_ungrouped(ar, var_decl->type); + } + fprintf(ar->f, " = "); + render_node_grouped(ar, var_decl->expr); + fprintf(ar->f, ") "); + render_node_grouped(ar, node->data.if_var_expr.then_block); + if (node->data.if_var_expr.else_node) { + fprintf(ar->f, " else "); + render_node_grouped(ar, node->data.if_var_expr.else_node); + } + break; + } case NodeTypeFnDecl: case NodeTypeParamDecl: case NodeTypeErrorValueDecl: @@ -715,7 +736,6 @@ static void render_node_extra(AstRender *ar, AstNode *node, bool grouped) { case NodeTypeStructValueField: case NodeTypeUse: case NodeTypeZeroesLiteral: - case NodeTypeIfVarExpr: case NodeTypeForExpr: case NodeTypeSwitchExpr: case NodeTypeSwitchProng: -- cgit v1.2.3