diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/TypeUtils.kt b/core/descriptors/src/org/jetbrains/kotlin/types/TypeUtils.kt index 8e24830d4b8..5f7781fdc7c 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/TypeUtils.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/TypeUtils.kt @@ -144,27 +144,6 @@ fun Collection.closure(preserveOrder: Boolean = false, f: (T) -> Collecti return result } -fun Collection.lazyClosure(f: (T) -> Collection): Sequence = sequence { - if (size == 0) return@sequence - var sizeBeforeIteration = 0 - - yieldAll(this@lazyClosure) - var yieldedCount = size - var elementsToCheck = this@lazyClosure - - while (yieldedCount > sizeBeforeIteration) { - val toAdd = hashSetOf() - elementsToCheck.forEach { - val neighbours = f(it) - yieldAll(neighbours) - yieldedCount += neighbours.size - toAdd.addAll(neighbours) - } - elementsToCheck = toAdd - sizeBeforeIteration = yieldedCount - } -} - fun boundClosure(types: Collection): Collection = types.closure { type -> TypeUtils.getTypeParameterDescriptorOrNull(type)?.upperBounds ?: emptySet() } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/getModuleInfo.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/getModuleInfo.kt index aecb2f919c6..08b06901cd5 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/getModuleInfo.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/getModuleInfo.kt @@ -29,7 +29,6 @@ import org.jetbrains.kotlin.idea.util.isKotlinBinary import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.getParentOfType import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition -import org.jetbrains.kotlin.types.typeUtil.lazyClosure import org.jetbrains.kotlin.utils.addIfNotNull import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull import org.jetbrains.kotlin.utils.sure @@ -310,3 +309,27 @@ private fun OrderEntry.toIdeaModuleInfo( } return emptyList() } + +/** + * @see [org.jetbrains.kotlin.types.typeUtil.closure]. + */ +fun Collection.lazyClosure(f: (T) -> Collection): Sequence = sequence { + if (size == 0) return@sequence + var sizeBeforeIteration = 0 + + yieldAll(this@lazyClosure) + var yieldedCount = size + var elementsToCheck = this@lazyClosure + + while (yieldedCount > sizeBeforeIteration) { + val toAdd = hashSetOf() + elementsToCheck.forEach { + val neighbours = f(it) + yieldAll(neighbours) + yieldedCount += neighbours.size + toAdd.addAll(neighbours) + } + elementsToCheck = toAdd + sizeBeforeIteration = yieldedCount + } +} diff --git a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/NativePlatformKindResolution.kt b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/NativePlatformKindResolution.kt index 68fef8b471c..753f1d6bc18 100644 --- a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/NativePlatformKindResolution.kt +++ b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/NativePlatformKindResolution.kt @@ -26,12 +26,9 @@ import org.jetbrains.kotlin.descriptors.PackageFragmentProvider import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider import org.jetbrains.kotlin.descriptors.konan.DeserializedKonanModuleOrigin import org.jetbrains.kotlin.ide.konan.analyzer.NativeResolverForModuleFactory -import org.jetbrains.kotlin.idea.caches.project.IdeaModuleInfo import org.jetbrains.kotlin.idea.caches.project.LibraryInfo -import org.jetbrains.kotlin.idea.caches.project.SdkInfo -import org.jetbrains.kotlin.idea.caches.project.getModuleInfosFromIdeaModel +import org.jetbrains.kotlin.idea.caches.project.lazyClosure import org.jetbrains.kotlin.idea.caches.resolve.BuiltInsCacheKey -import org.jetbrains.kotlin.idea.caches.resolve.PlatformAnalysisSettings import org.jetbrains.kotlin.idea.compiler.IDELanguageSettingsProvider import org.jetbrains.kotlin.konan.file.File import org.jetbrains.kotlin.konan.library.* @@ -39,10 +36,10 @@ import org.jetbrains.kotlin.konan.util.KonanFactories import org.jetbrains.kotlin.platform.TargetPlatform import org.jetbrains.kotlin.platform.impl.NativeIdePlatformKind import org.jetbrains.kotlin.platform.konan.KonanPlatforms -import org.jetbrains.kotlin.resolve.* +import org.jetbrains.kotlin.resolve.CompilerDeserializationConfiguration +import org.jetbrains.kotlin.resolve.ImplicitIntegerCoercion +import org.jetbrains.kotlin.resolve.TargetEnvironment import org.jetbrains.kotlin.storage.StorageManager -import org.jetbrains.kotlin.types.typeUtil.lazyClosure -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult class NativePlatformKindResolution : IdePlatformKindResolution {