// !WITH_NEW_INFERENCE // FILE: a.kt package boundsWithSubstitutors open class A class B>() class C : A() val a = B() val a1 = B() class X() val b = X, C>>() val b0 = X() val b1 = X, String>>() // FILE: b.kt open class A {} open class B() class Pair abstract class C, X : (B) -> Pair, B>>() : B() { // 2 errors val a = B() // error abstract val x : (B) -> B } fun test() { foo() foo() bar() bar() bar() bar() 1.buzz() } fun foo() {} fun bar() {} fun Int.buzz() : Unit {}