Revert "FIR: add bfs helper and use it"

This reverts commit dbb0496d23.
This commit is contained in:
Ilya Kirillov
2021-10-26 00:37:31 +02:00
parent dbb0496d23
commit a11cd74b28
2 changed files with 8 additions and 25 deletions
@@ -46,7 +46,6 @@ import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtTypeReference
import org.jetbrains.kotlin.types.TypeApproximatorConfiguration
import org.jetbrains.kotlin.types.model.CaptureStatus
import org.jetbrains.kotlin.util.bfs
internal class KtFirTypeProvider(
override val analysisSession: KtFirAnalysisSession,
@@ -177,7 +176,14 @@ internal class KtFirTypeProvider(
override fun getAllSuperTypes(type: KtType, shouldApproximate: Boolean): List<KtType> {
require(type is KtFirType)
return listOf(type.coneType).bfs { it.getDirectSuperTypes(shouldApproximate).iterator() }.mapTo(mutableListOf()) { it.asKtType() }
val queue = type.coneType.getDirectSuperTypes(shouldApproximate).toCollection(ArrayDeque())
return buildSet {
while (queue.isNotEmpty()) {
val current = queue.removeFirst()
if (!add(current)) continue
queue.addAll(current.getDirectSuperTypes(shouldApproximate))
}
}.map { it.asKtType() }
}
}
@@ -1,23 +0,0 @@
/*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.util
/**
* Perform BFS on the given collection with neighbors created by the given function.
*/
fun <T> Collection<T>.bfs(getNeighbors: (T) -> Iterator<T>): Sequence<T> {
val queue = ArrayDeque(this)
val visited = mutableSetOf<T>()
return sequence {
while (queue.isNotEmpty()) {
val current = queue.removeFirst()
if (current in visited) continue
visited.add(current)
yield(current)
getNeighbors(current).forEach(queue::add)
}
}
}