Files
kotlin-fork/compiler/testData/diagnostics/tests/regressions/kt7585/base.kt
T
Mikhail Glukhikh 754f8af3fc Type<*> is inferred now if Type<A> and Type<B> common supertype is Type<X> and X is not within parameter upper bound. #KT-7585 Fixed. #EA-68943 Fixed.
It provides also a fix for KT-7585 (empty type intersection assertion).
A set of relevant tests, one fixed test
2015-09-01 15:49:29 +03:00

21 lines
546 B
Kotlin
Vendored

open class A
class E
abstract class Wrapper<T: A>(protected val t: T)
class MyWrapper(a: A): Wrapper<A>(a)
// This wrapper is not legal
class TheirWrapper(e: E): Wrapper<<!UPPER_BOUND_VIOLATED, UPPER_BOUND_VIOLATED!>E<!>>(e)
data class Pair<out T>(val a: T, val b: T)
fun foo(): String {
val matrix: Pair<Wrapper<*>>
// It's not legal to do such a thing because E is not derived from A
// But we should not have assertion errors because of it!
matrix = Pair(MyWrapper(A()), TheirWrapper(E()))
return matrix.toString()
}