Regression test for "completion gives unneeded generic type
instantiation snippet", #51783.

Type parameters that can be inferred from the arguments
are not part of the offered completion snippet.

-- flags --
-ignore_extra_diags

-- a.go --
package a

// identity has a single simple type parameter.
// The completion omits the instantiation.
func identity[T any](x T) T

// clone has a second type parameter that is nonetheless constrained by the parameter.
// The completion omits the instantiation.
func clone[S ~[]E, E any](s S) S

// unconstrained has a type parameter constrained only by the result.
// The completion suggests instantiation.
func unconstrained[X, Y any](x X) Y

// partial has three type parameters,
// only the last two of which may be omitted as they
// are constrained by the arguments.
func partial[R any, S ~[]E, E any](s S) R

//@item(identity, "identity", "details", "kind")
//@item(clone, "clone", "details", "kind")
//@item(unconstrained, "unconstrained", "details", "kind")
//@item(partial, "partial", "details", "kind")

func _() {
	_ = identity //@snippet("identity", identity, "identity(${1:})")

	_ = clone //@snippet("clone", clone, "clone(${1:})")

	_ = unconstrained //@snippet("unconstrained", unconstrained, "unconstrained[${1:}](${2:})")

	_ = partial //@snippet("partial", partial, "partial[${1:}](${2:})")

	// Result-type inference permits us to omit Y in this (rare) case,
	// but completion doesn't support that.
	var _ int = unconstrained //@snippet("unconstrained", unconstrained, "unconstrained[${1:}](${2:})")
}
