[FIR] Support smartcast after reference equality check
#KT-39000 Fixed
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
interface A
|
||||
class B: A
|
||||
|
||||
val X = B()
|
||||
|
||||
fun foo(b: B) {}
|
||||
|
||||
fun main(a: A) {
|
||||
if (a === X) {
|
||||
foo(a)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
FILE: kt39000.kt
|
||||
public abstract interface A : R|kotlin/Any| {
|
||||
}
|
||||
public final class B : R|A| {
|
||||
public constructor(): R|B| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
}
|
||||
public final val X: R|B| = R|/B.B|()
|
||||
public get(): R|B|
|
||||
public final fun foo(b: R|B|): R|kotlin/Unit| {
|
||||
}
|
||||
public final fun main(a: R|A|): R|kotlin/Unit| {
|
||||
when () {
|
||||
===(R|<local>/a|, R|/X|) -> {
|
||||
R|/foo|(R|<local>/a|)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user