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

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