// -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 satisfy comparable requires go1\.20 or later */]
	_ = f1[any /* ERROR any to satisfy comparable requires go1\.20 or later */]
	_ = f1[P]
	_ = f1[Q]
	_ = f1[R /* ERROR R does not satisfy comparable */]

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