[FIR] Support boolean elvis bound smartcasts

#KT-44511 Fixed
This commit is contained in:
Dmitriy Novozhilov
2021-02-08 11:26:36 +03:00
committed by TeamCityServer
parent 2b088f1147
commit 9724d81a49
8 changed files with 98 additions and 6 deletions
@@ -0,0 +1,35 @@
FILE: booleanElvisBoundSmartcast.kt
public final class A : R|kotlin/Any| {
public constructor(b: R|kotlin/Boolean|): R|A| {
super<R|kotlin/Any|>()
}
public final val b: R|kotlin/Boolean| = R|<local>/b|
public get(): R|kotlin/Boolean|
public final fun foo(): R|kotlin/Unit| {
}
}
public final fun test_1(a: R|A?|): R|kotlin/Unit| {
when () {
R|<local>/a|?.{ $subj$.R|/A.b| } ?: Boolean(false) -> {
R|<local>/a|.R|/A.foo|()
}
else -> {
R|<local>/a|.<Inapplicable(INAPPLICABLE_WRONG_RECEIVER): /A.foo>#()
}
}
}
public final fun test_2(a: R|A?|): R|kotlin/Unit| {
when () {
R|<local>/a|?.{ $subj$.R|/A.b| } ?: Boolean(true) -> {
R|<local>/a|.<Inapplicable(INAPPLICABLE_WRONG_RECEIVER): /A.foo>#()
}
else -> {
R|<local>/a|.R|/A.foo|()
}
}
}