// !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 = X, String>>() // FILE: b.kt open class A {} open class B() class Pair abstract class CInt>, X : (B<Char>) -> PairAny>, B>>() : B<Any>() { // 2 errors val a = B<Char>() // error abstract val x : (B<Char>) -> B<Any> } fun test() { foo<Int?>() foo() bar() bar() bar<Double?>() bar<Double>() 1.buzz<Double>() } fun foo() {} fun bar() {} fun Int> Int.buzz() : Unit {}