[FIR] Fix processing calls on unstable smartcasts with check not null call

This commit is contained in:
Dmitriy Novozhilov
2022-01-19 15:58:13 +03:00
committed by TeamCityServer
parent 1a3841d66d
commit 7d8a8d543f
7 changed files with 84 additions and 6 deletions
@@ -0,0 +1,35 @@
FILE: unstableSmartcastAndAmbiguity.kt
public abstract class XdSwimlaneSettings : R|kotlin/Any| {
public constructor(): R|XdSwimlaneSettings| {
super<R|kotlin/Any|>()
}
public abstract val settingsLogic: R|kotlin/String|
public get(): R|kotlin/String|
}
public final class XdIssueBasedSwimlaneSettings : R|XdSwimlaneSettings| {
public constructor(): R|XdIssueBasedSwimlaneSettings| {
super<R|XdSwimlaneSettings|>()
}
public final override val settingsLogic: R|kotlin/String|
public get(): R|kotlin/String| {
^ String(hello)
}
}
public final class XdAgile : R|kotlin/Any| {
public constructor(swimlaneSettings: R|XdSwimlaneSettings?|): R|XdAgile| {
super<R|kotlin/Any|>()
}
public final var swimlaneSettings: R|XdSwimlaneSettings?| = R|<local>/swimlaneSettings|
public get(): R|XdSwimlaneSettings?|
public set(value: R|XdSwimlaneSettings?|): R|kotlin/Unit|
}
public final fun test(x: R|XdAgile|): R|kotlin/Unit| {
lval y: R|XdIssueBasedSwimlaneSettings| = (R|<local>/x|.R|/XdAgile.swimlaneSettings| as R|XdIssueBasedSwimlaneSettings|)
R|<local>/x|.R|/XdAgile.swimlaneSettings|!!.R|/XdSwimlaneSettings.settingsLogic|
}
@@ -0,0 +1,15 @@
abstract class XdSwimlaneSettings {
abstract val settingsLogic: String
}
class XdIssueBasedSwimlaneSettings : XdSwimlaneSettings() {
override val settingsLogic: String
get() = "hello"
}
class XdAgile(var swimlaneSettings: XdSwimlaneSettings?)
fun test(x: XdAgile) {
val y = x.swimlaneSettings as XdIssueBasedSwimlaneSettings
x.swimlaneSettings!!.settingsLogic
}