aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2015-01-07 15:38:24 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2015-01-07 15:38:24 +0000
commitee756af88e15fd3aaaf9a7ec37fdc9b1e873e557 (patch)
treefcec12af91791a3df6f56aac083de204601cf1a3
parent50bb6c8e11803519bba0e58f9efee524acb99fc1 (diff)
downloadgcc-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.cc6
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(),