• Russ Cox's avatar
    [dev.typealias] reflect: fix StructOf use of StructField to match StructField docs · 43c70943
    Russ Cox authored
    The runtime internal structField interprets name=="" as meaning anonymous,
    but the exported reflect.StructField has always set Name, even for anonymous
    fields, and also set Anonymous=true.
    
    The initial implementation of StructOf confused the internal and public
    meanings of the StructField, expecting the runtime representation of
    anonymous fields instead of the exported reflect API representation.
    It also did not document this fact, so that users had no way to know how
    to create an anonymous field.
    
    This CL changes StructOf to use the previously documented interpretation
    of reflect.StructField instead of an undocumented one.
    
    The implementation of StructOf also, in some cases, allowed creating
    structs with unexported fields (if you knew how to ask) but set the
    PkgPath incorrectly on those fields. Rather than try to fix that, this CL
    changes StructOf to reject attempts to create unexported fields.
    (I think that may be the right design choice, not just a temporary limitation.
    In any event, it's not the topic for today's work.)
    
    For #17766.
    Fixes #18780.
    
    Change-Id: I585a4e324dc5a90551f49d21ae04d2de9ea04b6c
    Reviewed-on: https://go-review.googlesource.com/35731
    Run-TryBot: Russ Cox <rsc@golang.org>
    Reviewed-by: 's avatarRobert Griesemer <gri@golang.org>
    43c70943
Name
Last commit
Last update
..
archive Loading commit data...
bufio Loading commit data...
builtin Loading commit data...
bytes Loading commit data...
cmd Loading commit data...
compress Loading commit data...
container Loading commit data...
context Loading commit data...
crypto Loading commit data...
database/sql Loading commit data...
debug Loading commit data...
encoding Loading commit data...
errors Loading commit data...
expvar Loading commit data...
flag Loading commit data...
fmt Loading commit data...
go Loading commit data...
hash Loading commit data...
html Loading commit data...
image Loading commit data...
index/suffixarray Loading commit data...
internal Loading commit data...
io Loading commit data...
log Loading commit data...
math Loading commit data...
mime Loading commit data...
net Loading commit data...
os Loading commit data...
path Loading commit data...
plugin Loading commit data...
reflect Loading commit data...
regexp Loading commit data...
runtime Loading commit data...
sort Loading commit data...
strconv Loading commit data...
strings Loading commit data...
sync Loading commit data...
syscall Loading commit data...
testing Loading commit data...
text Loading commit data...
time Loading commit data...
unicode Loading commit data...
unsafe Loading commit data...
vendor/golang_org/x Loading commit data...
Make.dist Loading commit data...
all.bash Loading commit data...
all.bat Loading commit data...
all.rc Loading commit data...
androidtest.bash Loading commit data...
bootstrap.bash Loading commit data...
buildall.bash Loading commit data...
clean.bash Loading commit data...
clean.bat Loading commit data...
clean.rc Loading commit data...
cmp.bash Loading commit data...
iostest.bash Loading commit data...
make.bash Loading commit data...
make.bat Loading commit data...
make.rc Loading commit data...
naclmake.bash Loading commit data...
nacltest.bash Loading commit data...
race.bash Loading commit data...
race.bat Loading commit data...
run.bash Loading commit data...
run.bat Loading commit data...
run.rc Loading commit data...