[FIR] Fix infinite CFG traverse

This commit is contained in:
Krasnoriadtseva Anastasiia
2020-05-26 12:53:16 +03:00
committed by Dmitriy Novozhilov
parent 7644b4baec
commit a55dec28b9
@@ -31,6 +31,7 @@ fun <D> 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 <D> ControlFlowGraph.traverse(
TraverseDirection.Backward -> node.previousNodes
}
followingNodes.forEach {
stack.addFirst(it)
}
followingNodes.filterNot { visitedNodes.contains(it) }.forEach { stack.addFirst(it) }
}
}