public override String Decl(String name, Int32 precedence) {
if (precedence > this.Precedence) {
name = $"({name})";
}
String str = "";
if (this.Args.Count == 0) {
if (this.HasVarArgs) {
str = "(...)";
} else {
str = "(void)";
}
} else {
str = this.Args[0].type.Decl();
for (Int32 i = 1; i < this.Args.Count; ++i) {
str += $", {this.Args[i].type.Decl()}";
}
if (this.HasVarArgs) {
str += ", ...";
}
str = $"({str})";
}
return this.ReturnType.Decl($"{name}{str}", this.Precedence);
}
}