From 3f20453ccf545f6df6943ac738f61484e3885532 Mon Sep 17 00:00:00 2001 From: Natalia Selezneva Date: Fri, 13 Jul 2018 13:41:53 +0300 Subject: [PATCH] Do not create multiple ErrorGradleScriptDefinitions --- .../script/GradleScriptTemplateProvider.kt | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/core/script/GradleScriptTemplateProvider.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/core/script/GradleScriptTemplateProvider.kt index 75f60b064ed..71bdb483386 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/core/script/GradleScriptTemplateProvider.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/core/script/GradleScriptTemplateProvider.kt @@ -43,6 +43,7 @@ import org.jetbrains.plugins.gradle.util.GradleConstants import java.io.File import java.util.* import java.util.concurrent.atomic.AtomicBoolean +import kotlin.collections.LinkedHashSet import kotlin.reflect.KClass import kotlin.script.dependencies.Environment import kotlin.script.dependencies.ScriptContents @@ -96,24 +97,32 @@ class GradleScriptDefinitionsContributor(private val project: Project) : ScriptD failedToLoad.set(false) - // KotlinBuildScript should be last because it has wide scriptFilePattern - val kotlinDslTemplates = loadGradleTemplates( + val kotlinDslTemplates = LinkedHashSet() + + loadGradleTemplates( templateClass = "org.gradle.kotlin.dsl.KotlinInitScript", dependencySelector = kotlinDslDependencySelector, additionalResolverClasspath = kotlinDslAdditionalResolverCp - ) + loadGradleTemplates( + ).let { kotlinDslTemplates.addAll(it) } + + loadGradleTemplates( templateClass = "org.gradle.kotlin.dsl.KotlinSettingsScript", dependencySelector = kotlinDslDependencySelector, additionalResolverClasspath = kotlinDslAdditionalResolverCp - ) + loadGradleTemplates( + ).let { kotlinDslTemplates.addAll(it) } + + // KotlinBuildScript should be last because it has wide scriptFilePattern + loadGradleTemplates( templateClass = "org.gradle.kotlin.dsl.KotlinBuildScript", dependencySelector = kotlinDslDependencySelector, additionalResolverClasspath = kotlinDslAdditionalResolverCp - ) + ).let { kotlinDslTemplates.addAll(it) } + + if (kotlinDslTemplates.isNotEmpty()) { - return kotlinDslTemplates + return kotlinDslTemplates.toList() } val default = tryToLoadOldBuildScriptDefinition() @@ -244,6 +253,10 @@ class GradleScriptDefinitionsContributor(private val project: Project) : ScriptD fileName.endsWith(KOTLIN_DSL_SCRIPT_EXTENSION) override fun toString(): String = "ErrorGradleScriptDefinition" + + override fun equals(other: Any?): Boolean = other is ErrorGradleScriptDefinition + + override fun hashCode(): Int = name.hashCode() } private class ErrorScriptDependenciesResolver(private val message: String? = null) : DependenciesResolver {