From a55dec28b9fc05f1e4cd5d6bbad8bb7b453b32c7 Mon Sep 17 00:00:00 2001 From: Krasnoriadtseva Anastasiia Date: Tue, 26 May 2020 12:53:16 +0300 Subject: [PATCH] [FIR] Fix infinite CFG traverse --- .../src/org/jetbrains/kotlin/fir/analysis/cfa/CfgUtils.kt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) 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) } } }