aboutsummaryrefslogtreecommitdiff
path: root/src/ast_render.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2016-11-26 20:52:22 -0500
committerAndrew Kelley <superjoe30@gmail.com>2016-11-26 20:52:22 -0500
commit84f7805029e6a272f51bfa106cc40081a8581823 (patch)
tree74b0f0c1c3550fa3f9371986c3f7fa46e531ab68 /src/ast_render.cpp
parent4619b5de0609e98c0c98fe352f3bc32f036b6ad4 (diff)
downloadzig-84f7805029e6a272f51bfa106cc40081a8581823.tar.gz
zig-84f7805029e6a272f51bfa106cc40081a8581823.zip
IR: support import builtin function
Diffstat (limited to 'src/ast_render.cpp')
-rw-r--r--src/ast_render.cpp31
1 files changed, 15 insertions, 16 deletions
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, "[");