Skip to content

Commit 6184a6c

Browse files
committed
Revert "Getting DeepEqual to work with maps whose key is an interface (#4360)"
This reverts commit 1fd75ff. The change is not correct and allows code to continue while it should panic. For details, see: #4360 (comment)
1 parent 1fd75ff commit 6184a6c

File tree

2 files changed

+1
-19
lines changed

2 files changed

+1
-19
lines changed

src/reflect/all_test.go

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1102,20 +1102,6 @@ func init() {
11021102
cycleMap3["different"] = cycleMap3
11031103
}
11041104

1105-
type deepEqualInterface interface {
1106-
Foo()
1107-
}
1108-
type deepEqualConcrete struct {
1109-
int
1110-
}
1111-
1112-
func (deepEqualConcrete) Foo() {}
1113-
1114-
var (
1115-
deepEqualConcrete1 = deepEqualConcrete{1}
1116-
deepEqualConcrete2 = deepEqualConcrete{2}
1117-
)
1118-
11191105
var deepEqualTests = []DeepEqualTest{
11201106
// Equalities
11211107
{nil, nil, true},
@@ -1133,7 +1119,6 @@ var deepEqualTests = []DeepEqualTest{
11331119
{[]byte{1, 2, 3}, []byte{1, 2, 3}, true},
11341120
{[]MyByte{1, 2, 3}, []MyByte{1, 2, 3}, true},
11351121
{MyBytes{1, 2, 3}, MyBytes{1, 2, 3}, true},
1136-
{map[deepEqualInterface]string{deepEqualConcrete1: "a"}, map[deepEqualInterface]string{deepEqualConcrete1: "a"}, true},
11371122

11381123
// Inequalities
11391124
{1, 2, false},
@@ -1155,7 +1140,6 @@ var deepEqualTests = []DeepEqualTest{
11551140
{fn3, fn3, false},
11561141
{[][]int{{1}}, [][]int{{2}}, false},
11571142
{&structWithSelfPtr{p: &structWithSelfPtr{s: "a"}}, &structWithSelfPtr{p: &structWithSelfPtr{s: "b"}}, false},
1158-
{map[deepEqualInterface]string{deepEqualConcrete1: "a"}, map[deepEqualInterface]string{deepEqualConcrete2: "a"}, false},
11591143

11601144
// Fun with floating point.
11611145
{math.NaN(), math.NaN(), false},

src/reflect/value.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -982,9 +982,7 @@ func (v Value) MapIndex(key Value) Value {
982982
vkey := v.typecode.key()
983983

984984
// compare key type with actual key type of map
985-
// AssignableTo is not implemented for interfaces
986-
// avoid: "reflect: unimplemented: AssignableTo with interface"
987-
if vkey.Kind() != Interface && !key.typecode.AssignableTo(vkey) {
985+
if !key.typecode.AssignableTo(vkey) {
988986
// type error?
989987
panic("reflect.Value.MapIndex: incompatible types for key")
990988
}

0 commit comments

Comments
 (0)