// Copyright 2022 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 S[A, B any] struct {
	f int
}

func (S[A, B]) m() {}

// TODO(gri): with type-type inference enabled we should only report one error
// below. See issue #50588.

func _[A any](s S /* ERROR "got 1 arguments but 2 type parameters" */ [A]) {
	// we should see no follow-on errors below
	s.f = 1
	s.m()
}

// another test case from the issue

func _() {
	X(Interface[*F /* ERROR "got 1 arguments but 2 type parameters" */ [string]](Impl{}))
}

func X[Q Qer](fs Interface[Q]) {
}

type Impl struct{}

func (Impl) M() {}

type Interface[Q Qer] interface {
	M()
}

type Qer interface {
	Q()
}

type F[A, B any] struct{}

func (f *F[A, B]) Q() {}
