aboutsummaryrefslogtreecommitdiff
path: root/boot/symbol.cc
diff options
context:
space:
mode:
Diffstat (limited to 'boot/symbol.cc')
-rw-r--r--boot/symbol.cc8
1 files changed, 7 insertions, 1 deletions
diff --git a/boot/symbol.cc b/boot/symbol.cc
index 0814217..466715b 100644
--- a/boot/symbol.cc
+++ b/boot/symbol.cc
@@ -117,7 +117,8 @@ namespace elna::boot
auto right_procedure = resolved_that.get<procedure_type>();
return right_procedure != nullptr && left_procedure->return_type == right_procedure->return_type
- && left_procedure->parameters == right_procedure->parameters;
+ && left_procedure->parameters == right_procedure->parameters
+ && left_procedure->variadic == right_procedure->variadic;
}
if (auto left_parameter = resolved_this.get<parameter_type>())
{
@@ -190,6 +191,10 @@ namespace elna::boot
{
std::string result = "proc(" + join(payload->parameters) + ")";
+ if (payload->variadic)
+ {
+ result += " #{varargs}";
+ }
if (payload->return_type.no_return)
{
result += " -> !";
@@ -578,6 +583,7 @@ namespace elna::boot
}
auto result = std::make_shared<procedure_type>(std::move(result_return));
+ result->variadic = procedure->variadic;
result->parameters.reserve(procedure->parameters.size());
for (const type& parameter_type : procedure->parameters)
{