f5eb9a8ec6
PR go/66138 reflect, encoding/json, encoding/xml: fix unexported embedded structs Bring in three changes from the master Go repository. These changes will be in Go 1.6, but they are appropriate for gccgo now because they resolve a long-standing discrepancy between how gc and gccgo handle the PkgPath field for embedded unexported struct fields. The core issue is described at https://golang.org/cl/7247. This has been reported against gccgo as https://gcc.gnu.org/PR66138. The three changes being brought over are: https://golang.org/cl/14010 reflect: adjust access to unexported embedded structs This CL changes reflect to allow access to exported fields and methods in unexported embedded structs for gccgo and after gc has been adjusted to disallow access to embedded unexported structs. Adresses #12367, #7363, #11007, and #7247. https://golang.org/cl/14011 encoding/json: check for exported fields in embedded structs Addresses issue #12367. https://golang.org/cl/14012 encoding/xml: check for exported fields in embedded structs Addresses issue #12367. Reviewed-on: https://go-review.googlesource.com/16723 From-SVN: r229907
44 lines
847 B
Go
44 lines
847 B
Go
// Copyright 2012 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.
|
|
|
|
package reflect
|
|
|
|
// MakeRO returns a copy of v with the read-only flag set.
|
|
func MakeRO(v Value) Value {
|
|
v.flag |= flagStickyRO
|
|
return v
|
|
}
|
|
|
|
// IsRO reports whether v's read-only flag is set.
|
|
func IsRO(v Value) bool {
|
|
return v.flag&flagStickyRO != 0
|
|
}
|
|
|
|
var CallGC = &callGC
|
|
|
|
const PtrSize = ptrSize
|
|
|
|
func FuncLayout(t Type, rcvr Type) (frametype Type, argSize, retOffset uintptr, stack []byte, gc []byte, ptrs bool) {
|
|
return
|
|
}
|
|
|
|
func TypeLinks() []string {
|
|
return nil
|
|
}
|
|
|
|
var GCBits = gcbits
|
|
|
|
// Will be provided by runtime eventually.
|
|
func gcbits(interface{}) []byte {
|
|
return nil
|
|
}
|
|
|
|
func MapBucketOf(x, y Type) Type {
|
|
return nil
|
|
}
|
|
|
|
func CachedBucketOf(m Type) Type {
|
|
return nil
|
|
}
|