// run

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


func f[T comparable](i any) {
	var t T

	if i != t {
		println("FAIL: if i != t")
	}
}

type myint int

func (m myint) foo() {
}

type fooer interface {
	foo()
}

type comparableFoo interface {
	comparable
	foo()
}

func g[T comparableFoo](i fooer) {
	var t T

	if i != t {
		println("FAIL: if i != t")
	}
}

func main() {
	f[int](int(0))
	g[myint](myint(0))
}
