aboutsummaryrefslogtreecommitdiff
path: root/src/ast_render.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ast_render.cpp')
-rw-r--r--src/ast_render.cpp22
1 files changed, 21 insertions, 1 deletions
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: