From 84f7805029e6a272f51bfa106cc40081a8581823 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Sat, 26 Nov 2016 20:52:22 -0500 Subject: IR: support import builtin function --- src/ast_render.cpp | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) (limited to 'src/ast_render.cpp') diff --git a/src/ast_render.cpp b/src/ast_render.cpp index fb7f6bc5cf..4b25bc2f6b 100644 --- a/src/ast_render.cpp +++ b/src/ast_render.cpp @@ -528,25 +528,24 @@ static void render_node_extra(AstRender *ar, AstNode *node, bool grouped) { break; } case NodeTypeFnCallExpr: - if (node->data.fn_call_expr.is_builtin) { - fprintf(ar->f, "@"); - } else { + { + if (node->data.fn_call_expr.is_builtin) { + fprintf(ar->f, "@"); + } + AstNode *fn_ref_node = node->data.fn_call_expr.fn_ref_expr; + bool grouped = (fn_ref_node->type != NodeTypeBinOpExpr); + render_node_extra(ar, fn_ref_node, grouped); fprintf(ar->f, "("); - } - render_node_ungrouped(ar, node->data.fn_call_expr.fn_ref_expr); - if (!node->data.fn_call_expr.is_builtin) { - fprintf(ar->f, ")"); - } - fprintf(ar->f, "("); - for (size_t i = 0; i < node->data.fn_call_expr.params.length; i += 1) { - AstNode *param = node->data.fn_call_expr.params.at(i); - if (i != 0) { - fprintf(ar->f, ", "); + for (size_t i = 0; i < node->data.fn_call_expr.params.length; i += 1) { + AstNode *param = node->data.fn_call_expr.params.at(i); + if (i != 0) { + fprintf(ar->f, ", "); + } + render_node_grouped(ar, param); } - render_node_grouped(ar, param); + fprintf(ar->f, ")"); + break; } - fprintf(ar->f, ")"); - break; case NodeTypeArrayAccessExpr: render_node_ungrouped(ar, node->data.array_access_expr.array_ref_expr); fprintf(ar->f, "["); -- cgit v1.2.3