// Copyright 2021 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[P interface{ *P }]() {} func f2[P interface{ func(P) }]() {} func f3[P, Q interface{ func(Q) P }]() {} func f4[P interface{ *Q }, Q interface{ func(P) }]() {} func f5[P interface{ func(P) }]() {} func f6[P interface { *Tree[P] }, Q any ]() {} func _() { f1 /* ERROR "cannot infer P" */ () f2 /* ERROR "cannot infer P" */ () f3 /* ERROR "cannot infer P" */ () f4 /* ERROR "cannot infer P" */ () f5 /* ERROR "cannot infer P" */ () f6 /* ERROR "cannot infer P" */ () } type Tree[P any] struct { left, right *Tree[P] data P } // test case from issue func foo[Src interface { func() Src }]() Src { return foo[Src] } func _() { foo /* ERROR "cannot infer Src" */ () }