diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleProjectResolverExtension.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleProjectResolverExtension.kt index b4d428ecd9d..da7f9706331 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleProjectResolverExtension.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleProjectResolverExtension.kt @@ -139,15 +139,11 @@ class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension() } else listOf(ideModule) for (currentModuleNode in moduleNodesToProcess) { - val toProcess = LinkedList>() - val processed = HashSet>() - toProcess.add(currentModuleNode) + val toProcess = ArrayDeque>().apply { add(currentModuleNode) } + val discovered = HashSet>().apply { add(currentModuleNode) } while (toProcess.isNotEmpty()) { val moduleNode = toProcess.pollLast() - if (processed.contains(moduleNode)) continue - - processed.add(moduleNode) val moduleNodeForGradleModel = if (useModulePerSourceSet()) { ExternalSystemApiUtil.findParent(moduleNode, ProjectKeys.MODULE) @@ -181,7 +177,8 @@ class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension() } val dependencies = if (useModulePerSourceSet()) moduleNode.getDependencies(ideProject) else getDependencyModules(ideModule, gradleModule.project) - dependencies.filterTo(toProcess) { it !in processed } + // queue only those dependencies that haven't been discovered earlier + dependencies.filterTo(toProcess, discovered::add) } } }