75 lines
2.2 KiB
Kotlin
Vendored
75 lines
2.2 KiB
Kotlin
Vendored
interface A
|
|
|
|
class B<T> where T : A
|
|
class C : A
|
|
typealias GGG = C
|
|
typealias HHH = GGG
|
|
typealias JJJ = B<C>
|
|
|
|
fun <T : A> fest() {
|
|
|
|
}
|
|
|
|
fun test() {
|
|
val b1 = B<<!UPPER_BOUND_VIOLATED!>Int<!>>()
|
|
val b2 = B<C>()
|
|
val b3 = B<<!UPPER_BOUND_VIOLATED!>Any?<!>>()
|
|
val b4 = B<<!UNRESOLVED_REFERENCE!>UnexistingType<!>>()<!UNRESOLVED_REFERENCE!>NL<!><!SYNTAX!><<!>Int<!SYNTAX!>><!>()NumberPhile<!SYNTAX!><!>
|
|
val b5 = B<<!UPPER_BOUND_VIOLATED!>B<<!UNRESOLVED_REFERENCE!>UnexistingType<!>><!>>()
|
|
fest<<!UPPER_BOUND_VIOLATED!>Boolean<!>>()
|
|
fest<C>()
|
|
fest<HHH>()
|
|
fest<<!UPPER_BOUND_VIOLATED!>JJJ<!>>()
|
|
}
|
|
|
|
open class S<F, G : F>
|
|
class T<U, Y : U> : S<U, Y>()
|
|
class P<T0: Number, T1>
|
|
class P1<T2 : Number, T3 : Number>
|
|
|
|
|
|
fun <K, L : K> rest() {
|
|
val o1 = S<K, L>()
|
|
val o2 = S<K, K>()
|
|
val o3 = S<L, L>()
|
|
|
|
val o4 = S<S<K, L>, T<K, L>>()
|
|
val o5 = S<S<K, L>, <!UPPER_BOUND_VIOLATED!>T<K, K><!>>()
|
|
val o5 = S<S<L, L>, <!UPPER_BOUND_VIOLATED!>T<K, L><!>>()
|
|
|
|
val o6 = S<Any, T<S<K, L>, <!UPPER_BOUND_VIOLATED!>String<!>>>()
|
|
val o7 = S<Any, T<S<K, L>, Nothing>>()
|
|
val o8 = P<<!UPPER_BOUND_VIOLATED!>String<!>, P1<<!UPPER_BOUND_VIOLATED!>String<!>, <!UPPER_BOUND_VIOLATED!>String<!>>>()
|
|
}
|
|
|
|
class NumColl<T : Collection<Number>>
|
|
typealias NL<K> = NumColl<List<K>>
|
|
val test7 = NL<Int>()<!UNRESOLVED_REFERENCE!>NumberPhile<!><!SYNTAX!><!>
|
|
val test8 = NL<<!UPPER_BOUND_VIOLATED!>String<!>>()
|
|
|
|
class NumberPhile<T: Number>(x: T)
|
|
val np1 = NumberPhile(10)
|
|
val np2 = NumberPhile(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)
|
|
|
|
class Test1<S1 : Test1<S1, K>, K : Any>
|
|
class Test2<S2 : Test1<S2, *>>
|
|
|
|
class Test3<S3 : Test3<S3, in K>, K : Any>
|
|
class Test4<S4 : Test3<<!UPPER_BOUND_VIOLATED!>S4<!>, out Any>>
|
|
|
|
class Test5<S5 : Test5<S5, in K>, K : Any>
|
|
class Test6<S6 : Test5<S6, in Any>>
|
|
|
|
class Test7<S7 : Test7<S7, in K>, K : CharSequence>
|
|
class Test8<S8 : Test7<S8, <!UPPER_BOUND_VIOLATED!>in Any<!>>>
|
|
|
|
class Class<V : Any>
|
|
typealias Alias <V1> = (Class<V1>) -> Boolean
|
|
|
|
/* TODO: Should not be errors. Uncomment after fixing of https://youtrack.jetbrains.com/issue/KT-48044
|
|
abstract class Base<T : Base<T>> {}
|
|
class DerivedOut<out O : Base<out O>> {}
|
|
class DerivedIn<in I : Base<in I>> {}*/
|
|
|
|
|