1 // Copyright 2021 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // Embedding of stand-alone type parameters is not permitted. 6 7 package p 8 9 type ( 10 _[P any] interface{ *P | []P | chan P | map[string]P } 11 _[P any] interface{ P /* ERROR "term cannot be a type parameter" */ } 12 _[P any] interface{ ~P /* ERROR "type in term ~P cannot be a type parameter" */ } 13 _[P any] interface{ int | P /* ERROR "term cannot be a type parameter" */ } 14 _[P any] interface{ int | ~P /* ERROR "type in term ~P cannot be a type parameter" */ } 15 ) 16 17 func _[P any]() { 18 type ( 19 _[P any] interface{ *P | []P | chan P | map[string]P } 20 _[P any] interface{ P /* ERROR "term cannot be a type parameter" */ } 21 _[P any] interface{ ~P /* ERROR "type in term ~P cannot be a type parameter" */ } 22 _[P any] interface{ int | P /* ERROR "term cannot be a type parameter" */ } 23 _[P any] interface{ int | ~P /* ERROR "type in term ~P cannot be a type parameter" */ } 24 25 _ interface{ *P | []P | chan P | map[string]P } 26 _ interface{ P /* ERROR "term cannot be a type parameter" */ } 27 _ interface{ ~P /* ERROR "type in term ~P cannot be a type parameter" */ } 28 _ interface{ int | P /* ERROR "term cannot be a type parameter" */ } 29 _ interface{ int | ~P /* ERROR "type in term ~P cannot be a type parameter" */ } 30 ) 31 } 32 33 func _[P any, Q interface{ *P | []P | chan P | map[string]P }]() {} 34 func _[P any, Q interface{ P /* ERROR "term cannot be a type parameter" */ }]() {} 35 func _[P any, Q interface{ ~P /* ERROR "type in term ~P cannot be a type parameter" */ }]() {} 36 func _[P any, Q interface{ int | P /* ERROR "term cannot be a type parameter" */ }]() {} 37 func _[P any, Q interface{ int | ~P /* ERROR "type in term ~P cannot be a type parameter" */ }]() {} 38