]> Cypherpunks.ru repositories - gostls13.git/commitdiff
test: add regress test for #53419
authorMatthew Dempsky <mdempsky@google.com>
Fri, 17 Jun 2022 22:19:59 +0000 (15:19 -0700)
committerGopher Robot <gobot@golang.org>
Fri, 17 Jun 2022 22:44:22 +0000 (22:44 +0000)
This currently works with GOEXPERIMENT=unified. Add a regress test to
make sure it stays that way.

Updates #53419.

Change-Id: I2ea1f9039c59807fbd497d69a0420771f8d6d035
Reviewed-on: https://go-review.googlesource.com/c/go/+/413014
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
Auto-Submit: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Robert Griesemer <gri@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>

src/go/internal/gcimporter/gcimporter_test.go
test/run.go
test/typeparam/issue53419.go [new file with mode: 0644]

index 6dced31ffb9a0417d624fe5e448e68d772413cd5..9aca6216a715f67c5584e9388a3ef1194dbf8464 100644 (file)
@@ -177,6 +177,7 @@ func TestImportTypeparamTests(t *testing.T) {
                "equal.go":      "inconsistent embedded sorting", // TODO(rfindley): investigate this.
                "nested.go":     "fails to compile",              // TODO(rfindley): investigate this.
                "issue50417.go": "inconsistent interface member sorting",
+               "issue53419.go": "fails to compile",
        }
 
        for _, entry := range list {
index cb1622ccc9763d3504ce09efce109ea72662e2c4..8934e23b3857a1a64a2f5e9bd932626a459438be 100644 (file)
@@ -1966,6 +1966,7 @@ var types2Failures32Bit = setOf(
 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
 )
 
 // In all of these cases, the 1.17 compiler reports reasonable errors, but either the
diff --git a/test/typeparam/issue53419.go b/test/typeparam/issue53419.go
new file mode 100644 (file)
index 0000000..62a226f
--- /dev/null
@@ -0,0 +1,28 @@
+// 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.
+
+package main
+
+type T1 struct{}
+type T2 struct{}
+type Both struct {
+       T1
+       T2
+}
+
+func (T1) m()   { panic("FAIL") }
+func (T2) m()   { panic("FAIL") }
+func (Both) m() {}
+
+func f[T interface{ m() }](c T) {
+       c.m()
+}
+
+func main() {
+       var b Both
+       b.m()
+       f(b)
+}