FIR: Preserve K1 behavior for rawTypeValue ?: nothingTypedValue

It's been approximated to the non-raw version back then

^KT-54526 Fixed
This commit is contained in:
Denis.Zharkov
2022-10-24 12:58:22 +02:00
committed by Space Team
parent 52eb535a7d
commit 82100a414f
6 changed files with 50 additions and 1 deletions
@@ -0,0 +1,22 @@
// SKIP_TXT
// FIR_IDENTICAL
// FILE: Generic.java
public class Generic<T> {
public static class ML<E> {}
public static Generic create() { return null; }
public <E> E foo(ML<E> w) { }
}
// FILE: main.kt
import Generic.ML
fun main(w: ML<String>) {
val generic2 = Generic.create() ?: return
// Not enough information to infer E (both K1 and K2 after KT-41794 is done)
// Because generic information is erased from the raw type scope of `generic1`
// But the parameter E is still there (that is a questionable behavior)
// `generic2` does have just non-raw type `Generic<Any!>..Generic<*>?`
generic2.foo(w).length // OK in K1, fails in K2 after KT-41794 is done
}