]> Cypherpunks repositories - gostls13.git/commitdiff
test: add compiler regress tests for #46461
authorMatthew Dempsky <mdempsky@google.com>
Thu, 9 Sep 2021 18:17:39 +0000 (11:17 -0700)
committerMatthew Dempsky <mdempsky@google.com>
Thu, 9 Sep 2021 19:37:25 +0000 (19:37 +0000)
gri@ reports that types2 now correctly handles when type parameters
recursively refer back to the parameterized type, so we might as well
add tests to exercise that. Unified IR also correctly handles
importing and exporting these types, but -G=3 currently does not.

Updates #46461.

Change-Id: I272102aa08c40c980b9aeeca9f834291dfbbcc3e
Reviewed-on: https://go-review.googlesource.com/c/go/+/348738
Trust: Matthew Dempsky <mdempsky@google.com>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Robert Griesemer <gri@golang.org>
src/go/internal/gcimporter/gcimporter_test.go
test/run.go
test/typeparam/issue46461.go [new file with mode: 0644]
test/typeparam/issue46461b.dir/a.go [new file with mode: 0644]
test/typeparam/issue46461b.dir/b.go [new file with mode: 0644]
test/typeparam/issue46461b.go [new file with mode: 0644]

index 9f4345d8f9c06463c288d9afb37901fbdc1fd388..478534daf2e129ae981a899da3dc9c8395ba31f8 100644 (file)
@@ -167,6 +167,8 @@ func TestImportTypeparamTests(t *testing.T) {
        skip := map[string]string{
                "equal.go":  "inconsistent embedded sorting", // TODO(rfindley): investigate this.
                "nested.go": "fails to compile",              // TODO(rfindley): investigate this.
+
+               "issue46461.go": "known issue with type parameter constraints referring back to parameterized type",
        }
 
        for _, entry := range list {
index 790b54bfd2c2185eb74f3e6e5c2eaee666944621..d2b7b88768a3167d724dc3906b9240217ec308c2 100644 (file)
@@ -2188,6 +2188,8 @@ var g3Failures = setOf(
 
        "typeparam/nested.go", // -G=3 doesn't support function-local types with generics
 
+       "typeparam/issue46461b.go", // -G=3 fails when type parameters refer back to the parameterized type itself
+
        "typeparam/mdempsky/4.go", // -G=3 can't export functions with labeled breaks in loops
 )
 
diff --git a/test/typeparam/issue46461.go b/test/typeparam/issue46461.go
new file mode 100644 (file)
index 0000000..2c54a6b
--- /dev/null
@@ -0,0 +1,13 @@
+// compile -G=3
+
+// Copyright 2021 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 p
+
+type T[U interface{ M() T[U] }] int
+
+type X int
+
+func (X) M() T[X] { return 0 }
diff --git a/test/typeparam/issue46461b.dir/a.go b/test/typeparam/issue46461b.dir/a.go
new file mode 100644 (file)
index 0000000..0d53b3e
--- /dev/null
@@ -0,0 +1,7 @@
+// Copyright 2021 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 a
+
+type T[U interface{ M() T[U] }] int
diff --git a/test/typeparam/issue46461b.dir/b.go b/test/typeparam/issue46461b.dir/b.go
new file mode 100644 (file)
index 0000000..3393a37
--- /dev/null
@@ -0,0 +1,11 @@
+// Copyright 2021 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 b
+
+import "./a"
+
+type X int
+
+func (X) M() a.T[X] { return 0 }
diff --git a/test/typeparam/issue46461b.go b/test/typeparam/issue46461b.go
new file mode 100644 (file)
index 0000000..87b4ff4
--- /dev/null
@@ -0,0 +1,7 @@
+// compiledir -G=3
+
+// Copyright 2021 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 ignored