Don't treat values of type "Unit?" to be always equal to Unit.VALUE
Two changes here: StackValue.Constant does cast iff value is non-null (if null, no cast between classes is really needed, as null can be an instance of anything), and codegen for safe qualified expressions uses correct type for the expression #KT-4265 Fixed
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
fun isNull(x: Unit?) = x == null
|
||||
|
||||
fun isNullGeneric<T : Any>(x: T?) = x == null
|
||||
|
||||
fun deepIsNull0(x: Unit?) = isNull(x)
|
||||
fun deepIsNull(x: Unit?) = deepIsNull0(x)
|
||||
|
||||
fun box(): String {
|
||||
if (!isNull(null)) return "Fail 1"
|
||||
|
||||
val x: Unit? = null
|
||||
if (!isNull(x)) return "Fail 2"
|
||||
|
||||
val y = x
|
||||
if (!isNullGeneric(y)) return "Fail 3"
|
||||
|
||||
if (!deepIsNull((null : Unit?) ?: null)) return "Fail 4"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user