stage2: implement var args

This commit is contained in:
Veikka Tuominen
2021-01-29 12:19:10 +02:00
parent 17e6e09285
commit 8c6e7fb2c7
7 changed files with 147 additions and 34 deletions

View File

@@ -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(')');
}