diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/ScriptModuleInfos.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/ScriptModuleInfos.kt index 94d20ce1295..5feb15d4a7d 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/ScriptModuleInfos.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/ScriptModuleInfos.kt @@ -44,16 +44,14 @@ data class ScriptModuleInfo( override fun contentScope() = GlobalSearchScope.fileScope(project, scriptFile) override fun dependencies(): List { - val result = arrayListOf(this, ScriptDependenciesModuleInfo(project, this)) - relatedModuleSourceInfo?.let { result.add(it) } - result.addAll(sdkDependencies(externalDependencies, project)) - return result + return arrayListOf(this).apply { + add(ScriptDependenciesInfo.ForFile(project, this@ScriptModuleInfo)) + relatedModuleSourceInfo?.let { add(it) } + findJdk(externalDependencies, project)?.let { add(SdkInfo(project, it)) } + } } } -private fun sdkDependencies(scriptDependencies: ScriptDependencies?, project: Project): List = - listOfNotNull(findJdk(scriptDependencies, project)?.let { SdkInfo(project, it) }) - fun findJdk(dependencies: ScriptDependencies?, project: Project): Sdk? { val allJdks = getAllProjectSdks() // workaround for mismatched gradle wrapper and plugin version @@ -67,52 +65,62 @@ fun findJdk(dependencies: ScriptDependencies?, project: Project): Sdk? { ?: allJdks.firstOrNull() } -class ScriptDependenciesModuleInfo( - val project: Project, - val scriptModuleInfo: ScriptModuleInfo? -) : IdeaModuleInfo, BinaryModuleInfo { - override fun dependencies() = (listOf(this) + sdkDependencies( - scriptModuleInfo?.externalDependencies, - project - )) +sealed class ScriptDependenciesInfo(val project: Project) : IdeaModuleInfo, BinaryModuleInfo { + abstract val sdk: Sdk? override val name = Name.special("