diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2015-01-07 15:38:24 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2015-01-07 15:38:24 +0000 |
commit | ee756af88e15fd3aaaf9a7ec37fdc9b1e873e557 (patch) | |
tree | fcec12af91791a3df6f56aac083de204601cf1a3 | |
parent | 50bb6c8e11803519bba0e58f9efee524acb99fc1 (diff) | |
download | gcc-ee756af88e15fd3aaaf9a7ec37fdc9b1e873e557.zip gcc-ee756af88e15fd3aaaf9a7ec37fdc9b1e873e557.tar.gz gcc-ee756af88e15fd3aaaf9a7ec37fdc9b1e873e557.tar.bz2 |
compiler: Don't assign to embedded builtins in imported struct composite
literals.
Fixes https://github.com/golang/go/issues/6832.
From-SVN: r219313
-rw-r--r-- | gcc/go/gofrontend/expressions.cc | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc index d386b81..323ce16 100644 --- a/gcc/go/gofrontend/expressions.cc +++ b/gcc/go/gofrontend/expressions.cc @@ -12937,7 +12937,8 @@ Composite_literal_expression::lower_struct(Gogo* gogo, Type* type) pf != st->fields()->end(); ++pf) { - if (Gogo::is_hidden_name(pf->field_name())) + if (Gogo::is_hidden_name(pf->field_name()) + || pf->is_embedded_builtin(gogo)) error_at(this->location(), "assignment of unexported field %qs in %qs literal", Gogo::message_name(pf->field_name()).c_str(), @@ -13114,7 +13115,8 @@ Composite_literal_expression::lower_struct(Gogo* gogo, Type* type) if (type->named_type() != NULL && type->named_type()->named_object()->package() != NULL - && Gogo::is_hidden_name(sf->field_name())) + && (Gogo::is_hidden_name(sf->field_name()) + || sf->is_embedded_builtin(gogo))) error_at(name_expr->location(), "assignment of unexported field %qs in %qs literal", Gogo::message_name(sf->field_name()).c_str(), |