From: ian Date: Thu, 2 Feb 2012 06:24:07 +0000 (+0000) Subject: compiler: Fix parameter references in method expressions. X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f470da5967a89504bed2e301ef1235ddf626f1d5;p=thirdparty%2Fgcc.git compiler: Fix parameter references in method expressions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@183825 138bc75d-0d04-0410-961f-82ee72b054a4 --- 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);