Avoid iterating over all idea modules.

Use hash table to quickly lookup idea module by gradle project path
This commit is contained in:
Nikita Skvortsov
2020-10-01 13:33:44 +03:00
committed by Vladimir Dolzhenko
parent 713f6e1ed3
commit 02c31a711c
@@ -145,6 +145,7 @@ class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension()
ExternalSystemApiUtil.findAll(ideModule, GradleSourceSetData.KEY)
} else listOf(ideModule)
val ideaModulesByGradlePaths = gradleModule.project.modules.groupBy { it.gradleProject.path }
var dirtyDependencies = true
for (currentModuleNode in moduleNodesToProcess) {
val toProcess = ArrayDeque<DataNode<out ModuleData>>().apply { add(currentModuleNode) }
@@ -158,7 +159,7 @@ class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension()
} else moduleNode
val ideaModule = if (moduleNodeForGradleModel != ideModule) {
gradleModule.project.modules.firstOrNull { it.gradleProject.path == moduleNodeForGradleModel?.data?.id }
moduleNodeForGradleModel?.data?.id?.let { ideaModulesByGradlePaths[it]?.firstOrNull() }
} else gradleModule
val implementsModuleIds = resolverCtx.getExtraProject(ideaModule, KotlinGradleModel::class.java)?.implements