// 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{}
)
