"nested.go": "fails to compile", // TODO(rfindley): investigate this.
"issue50417.go": "inconsistent interface member sorting",
"issue53419.go": "fails to compile",
+ "issue53477.go": "fails to compile",
}
for _, entry := range list {
"typeparam/nested.go", // 1.18 compiler doesn't support function-local types with generics
"typeparam/issue51521.go", // 1.18 compiler produces bad panic message and link error
"typeparam/issue53419.go", // 1.18 compiler mishandles generic selector resolution
+ "typeparam/issue53477.go", // 1.18 compiler mishandles generic interface-interface comparisons from value switch statements
)
// In all of these cases, the 1.17 compiler reports reasonable errors, but either the
--- /dev/null
+// run
+
+// Copyright 2022 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.
+
+// Test that generic interface-interface comparisons resulting from
+// value switch statements are handled correctly.
+
+package main
+
+func main() {
+ f[X](0)
+}
+
+type Mer[T any] interface{ M(T) }
+type MNer[T any] interface {
+ Mer[T]
+ N()
+}
+
+type X int
+
+func (X) M(X) {}
+func (X) N() {}
+
+func f[T MNer[T]](t T) {
+ switch Mer[T](t) {
+ case MNer[T](t):
+ // ok
+ default:
+ panic("FAIL")
+ }
+}