Fix incorrect assertion in FIR DFA

This commit is contained in:
Mikhail Glukhikh
2019-10-29 11:26:57 +03:00
parent 4adacfa5a2
commit 37cad476e8
2 changed files with 24 additions and 2 deletions
@@ -561,8 +561,7 @@ class FirDataFlowAnalyzer(private val components: FirAbstractBodyResolveTransfor
* x.length
* }
*/
variableStorage[initializer]?.let { initializerVariable ->
assert(initializerVariable.isSynthetic())
variableStorage[initializer]?.takeIf { it.isSynthetic() }?.let { initializerVariable ->
val realVariable = getOrCreateRealVariable(variable)
requireNotNull(realVariable)
logicSystem.changeVariableForConditionFlow(node.flow, initializerVariable, realVariable)
@@ -0,0 +1,23 @@
FILE: anonymousInDelegate.kt
public abstract interface Foo : R|kotlin/Any| {
public abstract fun bar(): R|kotlin/Int|
}
public final val x: R|kotlin/Int|by R|kotlin/lazy|<R|kotlin/Int|>(<L> = lazy@fun <anonymous>(): R|kotlin/Int| {
lval foo: R|anonymous| = object : R|Foo| {
private constructor(): R|kotlin/Any| {
super<R|kotlin/Any|>()
}
public final override fun bar(): R|kotlin/Int| {
^bar Int(42)
}
}
R|<local>/foo|.R|/bar|()
}
)
public get(): R|kotlin/Int| {
^ D|/x|.R|kotlin/getValue|<R|kotlin/Int|>(Null(null), ::R|/x|)
}