| // 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{} // this could be a name followed by a type but it makes the rules more complicated | |
| _ [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{} | |
| ) | |