From 599c5dd474e8c84e2a30f3172ebf8a95c5ffd239 Mon Sep 17 00:00:00 2001 From: Vladimir Dolzhenko Date: Thu, 14 May 2020 21:34:26 +0200 Subject: [PATCH] Collect unique subtypes from incremental compilation cache --- .../src/org/jetbrains/kotlin/incremental/buildUtil.kt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/build-common/src/org/jetbrains/kotlin/incremental/buildUtil.kt b/build-common/src/org/jetbrains/kotlin/incremental/buildUtil.kt index a7751a89583..0f400f9fd99 100644 --- a/build-common/src/org/jetbrains/kotlin/incremental/buildUtil.kt +++ b/build-common/src/org/jetbrains/kotlin/incremental/buildUtil.kt @@ -33,6 +33,7 @@ import org.jetbrains.kotlin.utils.addToStdlib.flattenTo import java.io.File import java.util.* import kotlin.collections.HashSet +import kotlin.collections.LinkedHashSet const val DELETE_MODULE_FILE_PROPERTY = "kotlin.delete.module.file.after.build" @@ -218,16 +219,18 @@ fun withSubtypes( typeFqName: FqName, caches: Iterable ): Set { - val types = LinkedList(listOf(typeFqName)) + val types = LinkedHashSet(listOf(typeFqName)) val subtypes = hashSetOf() while (types.isNotEmpty()) { - val unprocessedType = types.pollFirst() + val iterator = types.iterator() + val unprocessedType = iterator.next() + iterator.remove() caches.asSequence() .flatMap { it.getSubtypesOf(unprocessedType) } .filter { it !in subtypes } - .forEach { types.addLast(it) } + .forEach { types.add(it) } subtypes.add(unprocessedType) }