mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
reflect: fix IsValid vs Kind mismatch after Elem of nil interface
LGTM=r R=r CC=golang-codereviews https://golang.org/cl/151960044
This commit is contained in:
parent
5edff32704
commit
62d3202aaa
2 changed files with 17 additions and 1 deletions
|
|
@ -3939,3 +3939,17 @@ func TestValueString(t *testing.T) {
|
|||
t.Errorf("ValueOf(Impl{}).Method(0).String() = %q, want %q", method.String(), "<func() Value>")
|
||||
}
|
||||
}
|
||||
|
||||
func TestInvalid(t *testing.T) {
|
||||
// Used to have inconsistency between IsValid() and Kind() != Invalid.
|
||||
type T struct{ v interface{} }
|
||||
|
||||
v := ValueOf(T{}).Field(0)
|
||||
if v.IsValid() != true || v.Kind() != Interface {
|
||||
t.Errorf("field: IsValid=%v, Kind=%v, want true, Interface", v.IsValid(), v.Kind())
|
||||
}
|
||||
v = v.Elem()
|
||||
if v.IsValid() != false || v.Kind() != Invalid {
|
||||
t.Errorf("field elem: IsValid=%v, Kind=%v, want false, Invalid", v.IsValid(), v.Kind())
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue