41 lines
929 B
Plaintext
41 lines
929 B
Plaintext
namespace boundsWithSubstitutors {
|
|
open class A<T>
|
|
class B<X : A<X>>()
|
|
|
|
class C : A<C>
|
|
|
|
val a = B<C>()
|
|
val a1 = B<<error>Int</error>>()
|
|
|
|
class X<A, B : A>()
|
|
|
|
val b = X<Any, X<A<C>, C>>
|
|
val b0 = X<Any, <error>Any?</error>>
|
|
val b1 = X<Any, X<A<C>, <error>String</error>>>
|
|
|
|
}
|
|
|
|
open class A {}
|
|
open class B<T : A>()
|
|
|
|
abstract class C<T : B<<error>Int</error>>, X : fun (B<<error>Char</error>>) : (B<<error>Any</error>>, B<A>)>() : B<<error>Any</error>>() { // 2 errors
|
|
val a = B<<error>Char</error>>() // error
|
|
|
|
abstract val x : fun (B<<error>Char</error>>) : B<<error>Any</error>>
|
|
}
|
|
|
|
|
|
fun test() {
|
|
foo<<error>Int?</error>>()
|
|
foo<Int>()
|
|
bar<Int?>()
|
|
bar<Int>()
|
|
bar<<error>Double?</error>>()
|
|
bar<<error>Double</error>>()
|
|
1.buzz<<error>Double</error>>()
|
|
}
|
|
|
|
fun foo<T : Any>() {}
|
|
fun bar<T : Int?>() {}
|
|
fun <T : <warning>Int</warning>> Int.buzz() : Unit {}
|