diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/cfa/CfgUtils.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/cfa/CfgUtils.kt index 14712032e65..3e9ac3ef079 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/cfa/CfgUtils.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/cfa/CfgUtils.kt @@ -31,6 +31,7 @@ fun ControlFlowGraph.traverse( stack.addFirst(initialNode) while (stack.isNotEmpty()) { val node = stack.removeFirst() + visitedNodes.add(node) val previousNodes = when (direction) { TraverseDirection.Forward -> node.previousNodes TraverseDirection.Backward -> node.followingNodes @@ -49,9 +50,7 @@ fun ControlFlowGraph.traverse( TraverseDirection.Backward -> node.previousNodes } - followingNodes.forEach { - stack.addFirst(it) - } + followingNodes.filterNot { visitedNodes.contains(it) }.forEach { stack.addFirst(it) } } }