// 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

func f[_ comparable]() {}

type S1 struct{ x int }
type S2 struct{ x any }
type S3 struct{ x [10]interface{ m() } }

func _[P1 comparable, P2 S2]() {
	_ = f[S1]
	_ = f[S2]
	_ = f[S3]

	type L1 struct { x P1 }
	type L2 struct { x P2 }
	_ = f[L1]
	_ = f[L2 /* ERROR "L2 does not satisfy comparable" */ ]
}


// example from issue

type Set[T comparable] map[T]struct{}

func NewSetFromSlice[T comparable](items []T) *Set[T] {
	s := Set[T]{}

	for _, item := range items {
		s[item] = struct{}{}
	}

	return &s
}

type T struct{ x any }

func main() {
	NewSetFromSlice([]T{
		{"foo"},
		{5},
	})
}
