// Copyright 2020 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 _[a /* ERROR "all type parameters must be named" */, b] struct{}
type _[a t, b t, c /* ERROR "all type parameters must be named" */ ] struct{}
type _ struct {
	t [n]byte
	t[a]
	t[a, b]
}
type _ interface {
	t[a]
	m[ /* ERROR "method must have no type parameters" */ _ _, /* ERROR mixed */ _]()
	t[a, b]
}

func _[] /* ERROR "empty type parameter list" */ ()
func _[a /* ERROR "all type parameters must be named" */, b ]()
func _[a t, b t, c /* ERROR "all type parameters must be named" */ ]()

// TODO(rfindley) incorrect error message (see existing TODO in parser)
func f[a b, 0 /* ERROR "expected '\)', found 0" */ ] ()

// issue #49482
type (
	_[a *[]int] struct{}
	_[a *t,] struct{}
	_[a *t|[]int] struct{}
	_[a *t|t,] struct{}
	_[a *t|~t,] struct{}
	_[a *struct{}|t] struct{}
	_[a *t|struct{}] struct{}
	_[a *struct{}|~t] struct{}
)

// issue #51488
type (
	_[a *t|t,] struct{}
	_[a *t|t, b t] struct{}
	_[a *t|t] struct{}
	_[a *[]t|t] struct{}
	_[a ([]t)] struct{}
	_[a ([]t)|t] struct{}
)
