JVM IR: fix isMarkedNullable for nullability-flexible types
Since nullability-flexible types in IR are represented by an annotation on an IrSimpleType, not a special instance, the common implementation of `KotlinTypeMarker.isMarkedNullable` in `TypeSystemContext` doesn't work. This method is used for example to generate `typeOf` in JVM IR, in `TypeSystemCommonBackendContext.generateTypeOf`, and this issue led to a difference in behavior of `typeOf` for nullability-flexible types. #KT-44726 Fixed
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
// !USE_EXPERIMENTAL: kotlin.ExperimentalStdlibApi
|
||||
// TARGET_BACKEND: JVM
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
// WITH_REFLECT
|
||||
// FILE: box.kt
|
||||
|
||||
package test
|
||||
|
||||
import kotlin.reflect.*
|
||||
|
||||
fun box(): String {
|
||||
val v = returnTypeOf { J.get() }.toString()
|
||||
if (v != "J") return "Fail: $v"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
inline fun <reified T: Any> returnTypeOf(block: () -> T) =
|
||||
typeOf<T>()
|
||||
|
||||
// FILE: J.java
|
||||
|
||||
public class J {
|
||||
public static J get() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user