Commit c573faf5 by Ian Lance Taylor

compiler: Another correction to hidden fields in composite literals.

From-SVN: r182154
parent 14f2a7e2
...@@ -12818,16 +12818,20 @@ Composite_literal_expression::lower_struct(Gogo* gogo, Type* type) ...@@ -12818,16 +12818,20 @@ Composite_literal_expression::lower_struct(Gogo* gogo, Type* type)
Struct_type* st = type->struct_type(); Struct_type* st = type->struct_type();
if (this->vals_ == NULL || !this->has_keys_) if (this->vals_ == NULL || !this->has_keys_)
{ {
if (this->vals_ != NULL && !this->vals_->empty()) if (this->vals_ != NULL
{ && !this->vals_->empty()
std::string reason; && type->named_type() != NULL
if (type->has_hidden_fields(NULL, &reason)) && 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(), error_at(this->location(),
"implicit assignment of hidden field"); "assignment of unexported field %qs in %qs literal",
else Gogo::message_name(pf->field_name()).c_str(),
error_at(this->location(), "%s", reason.c_str()); type->named_type()->message_name().c_str());
} }
} }
......
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