This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Go patch committed: Another hidden fields correction
- From: Ian Lance Taylor <iant at google dot com>
- To: gcc-patches at gcc dot gnu dot org, gofrontend-dev at googlegroups dot com
- Date: Thu, 08 Dec 2011 21:04:15 -0800
- Subject: Go patch committed: Another hidden fields correction
This is another correction to the recent Go frontend patch for hidden
fields. This treats both the case of a composite literal with field
names and one without the same way. Bootstrapped and ran Go testsuite
on x86_64-unknown-linux-gnu. Committed to mainline.
Ian
diff -r 2567b69456fe go/expressions.cc
--- a/go/expressions.cc Thu Dec 08 16:14:53 2011 -0800
+++ b/go/expressions.cc Thu Dec 08 21:02:14 2011 -0800
@@ -12818,16 +12818,20 @@
Struct_type* st = type->struct_type();
if (this->vals_ == NULL || !this->has_keys_)
{
- if (this->vals_ != NULL && !this->vals_->empty())
- {
- std::string reason;
- if (type->has_hidden_fields(NULL, &reason))
+ if (this->vals_ != NULL
+ && !this->vals_->empty()
+ && type->named_type() != NULL
+ && type->named_type()->named_object()->package() != NULL)
+ {
+ for (Struct_field_list::const_iterator pf = st->fields()->begin();
+ pf != st->fields()->end();
+ ++pf)
{
- if (reason.empty())
+ if (Gogo::is_hidden_name(pf->field_name()))
error_at(this->location(),
- "implicit assignment of hidden field");
- else
- error_at(this->location(), "%s", reason.c_str());
+ "assignment of unexported field %qs in %qs literal",
+ Gogo::message_name(pf->field_name()).c_str(),
+ type->named_type()->message_name().c_str());
}
}