diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/ControlFlowGraphBuilder.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/ControlFlowGraphBuilder.kt index 8b9dd8a2975..1511b05c3c7 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/ControlFlowGraphBuilder.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/ControlFlowGraphBuilder.kt @@ -54,6 +54,7 @@ class ControlFlowGraphBuilder { private val entersToPostponedAnonymousFunctions: MutableMap, PostponedLambdaEnterNode> = mutableMapOf() private val exitsFromPostponedAnonymousFunctions: MutableMap, PostponedLambdaExitNode> = mutableMapOf() + private val parentGraphForAnonymousFunctions: MutableMap, ControlFlowGraph> = mutableMapOf() private val exitsFromCompletedPostponedAnonymousFunctions: MutableList = mutableListOf() @@ -178,7 +179,7 @@ class ControlFlowGraphBuilder { null } if (graph != null) { - val previousGraph = graphs.top() + val previousGraph = parentGraphForAnonymousFunctions.remove(function.symbol) ?: graphs.top() if (previousGraph.kind == ControlFlowGraph.Kind.Function) { previousGraph.addSubGraph(graph) } @@ -213,6 +214,7 @@ class ControlFlowGraphBuilder { val symbol = anonymousFunction.symbol entersToPostponedAnonymousFunctions[symbol] = enterNode exitsFromPostponedAnonymousFunctions[symbol] = exitNode + parentGraphForAnonymousFunctions[symbol] = graph CFGNode.addEdge(lastNodes.pop(), enterNode, kind = EdgeKind.Simple, propagateDeadness = true) CFGNode.addEdge(enterNode, exitNode, kind = EdgeKind.Dfg, propagateDeadness = true) lastNodes.push(exitNode)