diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2012-02-02 06:24:07 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2012-02-02 06:24:07 +0000 |
commit | 3375a6c94c6d4102d51c497aa51e7d9b56fc268c (patch) | |
tree | 0519a410882e22c5bc86ead0cb88ccdb4f5e707e /gcc | |
parent | 4e15881eebce4cc030f21b7afd57a793c7484644 (diff) | |
download | gcc-3375a6c94c6d4102d51c497aa51e7d9b56fc268c.zip gcc-3375a6c94c6d4102d51c497aa51e7d9b56fc268c.tar.gz gcc-3375a6c94c6d4102d51c497aa51e7d9b56fc268c.tar.bz2 |
compiler: Fix parameter references in method expressions.
From-SVN: r183825
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/go/gofrontend/expressions.cc | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc index 25b7987..c3b43cd 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); |