// !WITH_NEW_INFERENCE // FILE: a.kt package boundsWithSubstitutors open class A class B>() class C : A() val a = B() val a1 = B<Int>() class X() val b = X, C>>() val b0 = XAny?>() val b1 = XX, 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<Char>() // error abstract val x : (B) -> B } fun test() { foo<Int?>() foo() bar() bar() bar<Double?>() bar<Double>() 1.buzz() } fun foo() {} fun bar() {} fun Int.buzz() : Unit {}