diff options
| author | Veikka Tuominen <git@vexu.eu> | 2021-01-29 12:19:10 +0200 |
|---|---|---|
| committer | Veikka Tuominen <git@vexu.eu> | 2021-03-06 15:55:29 +0200 |
| commit | 8c6e7fb2c7488faab0c41a4ea241f0110237ce91 (patch) | |
| tree | d4ca1d9e3c6a335caf311de1383e45758f221438 /src/codegen | |
| parent | 17e6e09285ed29ead1a3de5d5bfeb4d287f23215 (diff) | |
| download | zig-8c6e7fb2c7488faab0c41a4ea241f0110237ce91.tar.gz zig-8c6e7fb2c7488faab0c41a4ea241f0110237ce91.zip | |
stage2: implement var args
Diffstat (limited to 'src/codegen')
| -rw-r--r-- | src/codegen/c.zig | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/codegen/c.zig b/src/codegen/c.zig index a885b984ac..1a323441d9 100644 --- a/src/codegen/c.zig +++ b/src/codegen/c.zig @@ -215,8 +215,9 @@ pub const DeclGen = struct { try dg.renderType(w, tv.ty.fnReturnType()); const decl_name = mem.span(dg.decl.name); try w.print(" {s}(", .{decl_name}); - var param_len = tv.ty.fnParamLen(); - if (param_len == 0) + const param_len = tv.ty.fnParamLen(); + const is_var_args = tv.ty.fnIsVarArgs(); + if (param_len == 0 and !is_var_args) try w.writeAll("void") else { var index: usize = 0; @@ -228,6 +229,10 @@ pub const DeclGen = struct { try w.print(" a{d}", .{index}); } } + if (is_var_args) { + if (param_len != 0) try w.writeAll(", "); + try w.writeAll("..."); + } try w.writeByte(')'); } |
