From d75d0d8711d834f2f2f289dfbf6eb3ea9b492ab4 Mon Sep 17 00:00:00 2001 From: Natalia Selezneva Date: Mon, 26 Mar 2018 15:58:56 +0300 Subject: [PATCH] Refactor ScriptDependenciesModuleInfo Do not mix ScriptDependenciesInfo for all project and for concrete script. Rename ScriptDependenciesModuleInfo to ScriptDependenciesInfo Rename ScriptDependenciesModuleSourceInfo to ScriptDependenciesSourceInfo --- .../idea/caches/project/ScriptModuleInfos.kt | 70 +++++++++++-------- .../idea/caches/project/getModuleInfo.kt | 6 +- .../caches/resolve/KotlinCacheServiceImpl.kt | 24 +++---- .../compiler/IDELanguageSettingsProvider.kt | 7 +- .../ScriptDependenciesResolveScopeProvider.kt | 8 +-- .../IdeSamWithReceiverComponentContributor.kt | 5 +- 6 files changed, 65 insertions(+), 55 deletions(-) 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("