diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc index 25b79872787f..c3b43cdba39f 100644 --- a/gcc/go/gofrontend/expressions.cc +++ b/gcc/go/gofrontend/expressions.cc @@ -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);