// 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 ( // these need a comma to disambiguate _[P *T,] struct{} _[P *T, _ any] struct{} _[P (*T),] struct{} _[P (*T), _ any] struct{} _[P (T),] struct{} _[P (T), _ any] struct{} // these parse as name followed by type _[P *struct{}] struct{} _[P (*struct{})] struct{} _[P ([]int)] struct{} // array declarations _ [P(T)]struct{} _ [P((T))]struct{} _ [P * *T]struct{} _ [P * T]struct{} _ [P(*T)]struct{} _ [P(**T)]struct{} _ [P * T - T]struct{} _ [P*T-T, /* ERROR "unexpected comma" */ ]struct{} _ [10, /* ERROR "unexpected comma" */ ]struct{} // These should be parsed as generic type declarations. _[P *struct /* ERROR "expected expression" */ {}|int] struct{} _[P *struct /* ERROR "expected expression" */ {}|int|string] struct{} )