Files
kotlin-fork/compiler/testData/diagnostics/tests/regressions/kt7585/java.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

31 lines
648 B
Kotlin
Vendored

// FILE: A.java
class A {}
// FILE: Wrapper.java
abstract class Wrapper<T extends A> {
protected T t;
Wrapper(T t) { this.t = t; }
}
// FILE: kt7585.kt
class E
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()
}