]> Cypherpunks.ru repositories - gostls13.git/commitdiff
test: add regress test for #53477
authorMatthew Dempsky <mdempsky@google.com>
Tue, 21 Jun 2022 14:15:33 +0000 (07:15 -0700)
committerMatthew Dempsky <mdempsky@google.com>
Tue, 21 Jun 2022 15:00:37 +0000 (15:00 +0000)
This test already passes for GOEXPERIMENT=unified; add regress test to
ensure it stays that way.

Updates #53477.

Change-Id: Ib7aa7428260595077052207899edcc044a6ab1c8
Reviewed-on: https://go-review.googlesource.com/c/go/+/413394
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
Auto-Submit: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: David Chase <drchase@google.com>
src/go/internal/gcimporter/gcimporter_test.go
test/run.go
test/typeparam/issue53477.go [new file with mode: 0644]

index 9aca6216a715f67c5584e9388a3ef1194dbf8464..b32de1791032d70ce46589fcae0a81f276adfcaf 100644 (file)
@@ -178,6 +178,7 @@ func TestImportTypeparamTests(t *testing.T) {
                "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 {
index 8934e23b3857a1a64a2f5e9bd932626a459438be..224d24db90624120417796ece7641fa9b5d0e0b4 100644 (file)
@@ -1967,6 +1967,7 @@ var go118Failures = setOf(
        "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
diff --git a/test/typeparam/issue53477.go b/test/typeparam/issue53477.go
new file mode 100644 (file)
index 0000000..d128a7e
--- /dev/null
@@ -0,0 +1,34 @@
+// 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")
+       }
+}