From 4e6fb84bae375eb8e25746e1ccb42deb9b49bf05 Mon Sep 17 00:00:00 2001 From: Natalia Selezneva Date: Fri, 14 Dec 2018 12:44:49 +0300 Subject: [PATCH] Create one instance of StandardIdeScriptDefinition per project ScriptModuleInfo for scripts outside source roots in compared by virtualFile and script definition. So when we use ScriptDefinitionsManaged.getDefaultScriptDefinition we shouldn't create a new one on each call EA-132810 - assert: DiagnoseUnknownModuleInfoReporter.report --- .../idea/core/script/ScriptDefinitionsManager.kt | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDefinitionsManager.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDefinitionsManager.kt index 5eb46977aa6..81fe45e6ed6 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDefinitionsManager.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDefinitionsManager.kt @@ -141,7 +141,9 @@ class ScriptDefinitionsManager(private val project: Project) : LazyScriptDefinit } override fun getDefaultScriptDefinition(): KotlinScriptDefinition { - return StandardIdeScriptDefinition(project) + val standardScriptDefinitionContributor = ScriptDefinitionContributor.find(project) + ?: error("StandardScriptDefinitionContributor should be registered is plugin.xml") + return standardScriptDefinitionContributor.getDefinitions().last() } private fun updateDefinitions() { @@ -276,14 +278,16 @@ interface ScriptDefinitionContributor { } -class StandardScriptDefinitionContributor(private val project: Project) : ScriptDefinitionContributor { - override fun getDefinitions() = listOf(StandardIdeScriptDefinition(project)) +class StandardScriptDefinitionContributor(project: Project) : ScriptDefinitionContributor { + private val standardIdeScriptDefinition = StandardIdeScriptDefinition(project) + + override fun getDefinitions() = listOf(standardIdeScriptDefinition) override val id: String = "StandardKotlinScript" } -class StandardIdeScriptDefinition(project: Project) : KotlinScriptDefinition(ScriptTemplateWithArgs::class) { +class StandardIdeScriptDefinition internal constructor(project: Project) : KotlinScriptDefinition(ScriptTemplateWithArgs::class) { override val dependencyResolver = BundledKotlinScriptDependenciesResolver(project) }