Files
kotlin-fork/compiler/fir/analysis-tests/testData/resolve/diagnostics/upperBoundViolated.kt
T
2020-12-16 19:52:30 +03:00

49 lines
1.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<!>>()
val b5 = B<<!UNRESOLVED_REFERENCE!>B<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>()
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, <!UPPER_BOUND_VIOLATED!>T<S<K, L>, String><!>>()
val o7 = S<Any, T<S<K, L>, Nothing>>()
}
class NumColl<T : Collection<Number>>
typealias NL<K> = NumColl<List<K>>
val test7 = NL<Int>()
val test8 = NL<String>()
class NumberPhile<T: Number>(x: T)
val np1 = NumberPhile(10)
val np2 = <!INAPPLICABLE_CANDIDATE{LT}!><!INAPPLICABLE_CANDIDATE{PSI}!>NumberPhile<!>("Test")<!>