Broke other things - see issue 7522.
Fixes #7522.
Reopens issue 7363.
««« original CL description
cmd/gc: make embedded, unexported fields read-only.
Fixes #7363.
LGTM=gri
R=gri, rsc, bradfitz
CC=golang-codereviews
https://golang.org/cl/
66510044
»»»
LGTM=r, mpvl
R=golang-codereviews, r
CC=golang-codereviews, iant, mpvl
https://golang.org/cl/
85580046
ot = dgopkgpath(s, ot, t1->sym->pkg);
} else {
ot = dgostringptr(s, ot, nil);
- if(t1->type->sym != S &&
- (t1->type->sym->pkg == builtinpkg || !exportname(t1->type->sym->name)))
+ if(t1->type->sym != S && t1->type->sym->pkg == builtinpkg)
ot = dgopkgpath(s, ot, localpkg);
else
ot = dgostringptr(s, ot, nil);
+++ /dev/null
-// run
-
-// Copyright 2014 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// issue 7363: CanSet must return false for unexported embedded struct fields.
-
-package main
-
-import "reflect"
-
-type a struct {
-}
-
-type B struct {
- a
-}
-
-func main() {
- b := &B{}
- v := reflect.ValueOf(b).Elem().Field(0)
- if v.CanSet() {
- panic("B.a is an unexported embedded struct field")
- }
-}