aboutsummaryrefslogtreecommitdiff
path: root/test/typeparam
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2021-09-22 11:26:40 -0700
committerRobert Griesemer <gri@golang.org>2021-09-22 19:19:49 +0000
commit1e5774889212bdaff5d061b2a45cd0093a291b44 (patch)
tree1da226b93e0a2b96c48e23c3f24d387e9d9e0063 /test/typeparam
parent7a03ca65b303474c2ea610178105304eae1180df (diff)
downloadgo-1e5774889212bdaff5d061b2a45cd0093a291b44.tar.xz
cmd/compile, go/types: allow `any` anywhere (as a type)
Adjust types2 and go/types and some test cases. Because `any` is not treated specially anymore in constraint position we get additional errors in constraints if `any` is used before Go1.18 (in addition to the error that type parameter lists are not permitted before Go1.18). Fixes #33232. Change-Id: I85590c6094b07c3e494fef319e3a38d0217cf6f0 Reviewed-on: https://go-review.googlesource.com/c/go/+/351456 Trust: Robert Griesemer <gri@golang.org> Run-TryBot: Robert Griesemer <gri@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Robert Findley <rfindley@google.com>
Diffstat (limited to 'test/typeparam')
-rw-r--r--test/typeparam/tparam1.go19
1 files changed, 9 insertions, 10 deletions
diff --git a/test/typeparam/tparam1.go b/test/typeparam/tparam1.go
index 698877a6f0..3b4260c102 100644
--- a/test/typeparam/tparam1.go
+++ b/test/typeparam/tparam1.go
@@ -8,11 +8,10 @@
package tparam1
-// The predeclared identifier "any" is only visible as a constraint
-// in a type parameter list.
-var _ any // ERROR "cannot use any outside constraint position"
-func _(_ any) // ERROR "cannot use any outside constraint position"
-type _[_ any /* ok here */] struct{}
+// The predeclared identifier "any" may be used in place of interface{}.
+var _ any
+func _(_ any)
+type _[_ any] struct{}
const N = 10
@@ -24,16 +23,16 @@ type (
_[T1, T2 any, T3 any] struct{}
)
-func _[T any]() {}
-func _[T, T any]() {} // ERROR "T redeclared"
+func _[T any]() {}
+func _[T, T any]() {} // ERROR "T redeclared"
func _[T1, T2 any](x T1) T2 { panic(0) }
// Type parameters are visible from opening [ to end of function.
type C interface{}
-func _[T interface{}]() {}
-func _[T C]() {}
-func _[T struct{}]() {}// ERROR "not an interface"
+func _[T interface{}]() {}
+func _[T C]() {}
+func _[T struct{}]() {} // ERROR "not an interface"
func _[T interface{ m() T }]() {}
func _[T1 interface{ m() T2 }, T2 interface{ m() T1 }]() {
var _ T1