// -oldComparableSemantics

// 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 does not satisfy comparable */]
	_ = f1[any /* ERROR any does not satisfy comparable */]
	_ = f1[P]
	_ = f1[Q]
	_ = f1[R /* ERROR R does not satisfy comparable */]

	_ = f2[int]
	_ = f2[T /* ERROR T does not satisfy comparable */]
	_ = f2[any /* ERROR any does not satisfy comparable */]
	_ = f2[P]
	_ = f2[Q]
	_ = f2[R /* ERROR R does not satisfy comparable */]
}
