// -lang=go1.19

// 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 f1[_ comparable]()              {}
func f2[_ interface{ comparable }]() {}

type T interface{ m() }

func _[P comparable, Q ~int, R any]() {
	_ = f1[int]
	_ = f1[T /* ERROR T to implement comparable requires go1\.20 or later */]
	_ = f1[any /* ERROR any to implement comparable requires go1\.20 or later */]
	_ = f1[P]
	_ = f1[Q]
	_ = f1[R /* ERROR R does not implement comparable */]

	_ = f2[int]
	_ = f2[T /* ERROR T to implement comparable requires go1\.20 or later */]
	_ = f2[any /* ERROR any to implement comparable requires go1\.20 or later */]
	_ = f2[P]
	_ = f2[Q]
	_ = f2[R /* ERROR R does not implement comparable */]
}
