// 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() abstract class CInt>, X : (B<Char>) -> #(B<Any>, 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 {}