aboutsummaryrefslogtreecommitdiff
path: root/src/go/types/testdata/examples/methods.go2
diff options
context:
space:
mode:
Diffstat (limited to 'src/go/types/testdata/examples/methods.go2')
-rw-r--r--src/go/types/testdata/examples/methods.go217
1 files changed, 17 insertions, 0 deletions
diff --git a/src/go/types/testdata/examples/methods.go2 b/src/go/types/testdata/examples/methods.go2
index 76c6539e1b..4e87041e54 100644
--- a/src/go/types/testdata/examples/methods.go2
+++ b/src/go/types/testdata/examples/methods.go2
@@ -6,6 +6,8 @@
package p
+import "unsafe"
+
// Parameterized types may have methods.
type T1[A any] struct{ a A }
@@ -94,3 +96,18 @@ func (_ T2[_, _, _]) _() int { return 42 }
type T0 struct{}
func (T0) _() {}
func (T1[A]) _() {}
+
+// A generic receiver type may constrain its type parameter such
+// that it must be a pointer type. Such receiver types are not
+// permitted.
+type T3a[P interface{ ~int | ~string | ~float64 }] P
+
+func (T3a[_]) m() {} // this is ok
+
+type T3b[P interface{ ~unsafe.Pointer }] P
+
+func (T3b /* ERROR invalid receiver */ [_]) m() {}
+
+type T3c[P interface{ *int | *string }] P
+
+func (T3c /* ERROR invalid receiver */ [_]) m() {}