diff options
| author | Robert Griesemer <gri@golang.org> | 2021-09-22 11:26:40 -0700 |
|---|---|---|
| committer | Robert Griesemer <gri@golang.org> | 2021-09-22 19:19:49 +0000 |
| commit | 1e5774889212bdaff5d061b2a45cd0093a291b44 (patch) | |
| tree | 1da226b93e0a2b96c48e23c3f24d387e9d9e0063 /test/typeparam | |
| parent | 7a03ca65b303474c2ea610178105304eae1180df (diff) | |
| download | go-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.go | 19 |
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 |
