aboutsummaryrefslogtreecommitdiff
path: root/src/ast_render.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2017-01-23 16:40:17 -0500
committerAndrew Kelley <superjoe30@gmail.com>2017-01-23 16:40:17 -0500
commit17cb85dfb837949cd3a559fe8e99dee1f72463a4 (patch)
treea35d23e26938586ba0fb706964e2b7c2b4b894f7 /src/ast_render.cpp
parent1826a961608037405237f12df5aec94f8f5f3a10 (diff)
downloadzig-17cb85dfb837949cd3a559fe8e99dee1f72463a4.tar.gz
zig-17cb85dfb837949cd3a559fe8e99dee1f72463a4.zip
basic support for functions with variable length arguments
See #77
Diffstat (limited to 'src/ast_render.cpp')
-rw-r--r--src/ast_render.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/ast_render.cpp b/src/ast_render.cpp
index 20fcf955cf..2166d68cd5 100644
--- a/src/ast_render.cpp
+++ b/src/ast_render.cpp
@@ -393,7 +393,6 @@ static void render_node_extra(AstRender *ar, AstNode *node, bool grouped) {
print_symbol(ar, node->data.fn_proto.name);
fprintf(ar->f, "(");
int arg_count = node->data.fn_proto.params.length;
- bool is_var_args = node->data.fn_proto.is_var_args;
for (int arg_i = 0; arg_i < arg_count; arg_i += 1) {
AstNode *param_decl = node->data.fn_proto.params.at(arg_i);
assert(param_decl->type == NodeTypeParamDecl);
@@ -404,15 +403,16 @@ static void render_node_extra(AstRender *ar, AstNode *node, bool grouped) {
print_symbol(ar, param_decl->data.param_decl.name);
fprintf(ar->f, ": ");
}
- render_node_grouped(ar, param_decl->data.param_decl.type);
+ if (param_decl->data.param_decl.is_var_args) {
+ fprintf(ar->f, "...");
+ } else {
+ render_node_grouped(ar, param_decl->data.param_decl.type);
+ }
- if (arg_i + 1 < arg_count || is_var_args) {
+ if (arg_i + 1 < arg_count) {
fprintf(ar->f, ", ");
}
}
- if (is_var_args) {
- fprintf(ar->f, "...");
- }
fprintf(ar->f, ")");
AstNode *return_type_node = node->data.fn_proto.return_type;