Commit 3375a6c9 by Ian Lance Taylor

compiler: Fix parameter references in method expressions.

From-SVN: r183825
parent 4e15881e
......@@ -11711,10 +11711,21 @@ Selector_expression::lower_method_expression(Gogo* gogo)
const Typed_identifier_list* method_parameters = method_type->parameters();
if (method_parameters != NULL)
{
int i = 0;
for (Typed_identifier_list::const_iterator p = method_parameters->begin();
p != method_parameters->end();
++p)
parameters->push_back(*p);
++p, ++i)
{
if (!p->name().empty() && p->name() != Import::import_marker)
parameters->push_back(*p);
else
{
char buf[20];
snprintf(buf, sizeof buf, "$param%d", i);
parameters->push_back(Typed_identifier(buf, p->type(),
p->location()));
}
}
}
const Typed_identifier_list* method_results = method_type->results();
......@@ -11774,14 +11785,14 @@ Selector_expression::lower_method_expression(Gogo* gogo)
}
Expression_list* args;
if (method_parameters == NULL)
if (parameters->size() <= 1)
args = NULL;
else
{
args = new Expression_list();
for (Typed_identifier_list::const_iterator p = method_parameters->begin();
p != method_parameters->end();
++p)
Typed_identifier_list::const_iterator p = parameters->begin();
++p;
for (; p != parameters->end(); ++p)
{
vno = gogo->lookup(p->name(), NULL);
go_assert(vno != NULL);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment