From 13b4e8716c889dce0071fe647099bf690f0c4a34 Mon Sep 17 00:00:00 2001 From: Natalia Selezneva Date: Mon, 2 Dec 2019 12:51:13 +0300 Subject: [PATCH] Changes inside initscript and pluginManagement blocks should invalidate script configuration ^KT-35129 Fixed --- .../kotlin/idea/scripting/gradle/utils.kt | 6 ++++-- .../gradle/GradleScriptInputsWatcherTest.kt | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/utils.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/utils.kt index 8b99e1c542e..33ce6b3bbeb 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/utils.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/utils.kt @@ -20,6 +20,8 @@ import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtScriptInitializer import org.jetbrains.kotlin.psi.psiUtil.getChildrenOfType +private val sections = arrayListOf("buildscript", "plugins", "initscript", "pluginManagement") + fun isGradleKotlinScript(virtualFile: VirtualFile) = virtualFile.name.endsWith(".gradle.kts") fun getGradleScriptInputsStamp( @@ -38,8 +40,8 @@ fun getGradleScriptInputsStamp( ?.getChildrenOfType() ?.forEach { val call = it.children.singleOrNull() as? KtCallExpression - val callRef = call?.firstChild?.text - if (callRef == "buildscript" || callRef == "plugins") { + val callRef = call?.firstChild?.text ?: return@forEach + if (callRef in sections) { result.append(callRef) val lambda = call.lambdaArguments.singleOrNull() lambda?.accept(object : PsiRecursiveElementVisitor(false) { diff --git a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptInputsWatcherTest.kt b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptInputsWatcherTest.kt index ea5473d4ce7..d6472da663a 100644 --- a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptInputsWatcherTest.kt +++ b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptInputsWatcherTest.kt @@ -71,6 +71,22 @@ class GradleScriptInputsWatcherTest : AbstractScriptConfigurationLoadingTest() { assertConfigurationUpToDate(testFiles.buildKts) } + fun testSectionsInSettingsChange() { + assertAndLoadInitialConfiguration(testFiles.settings) + + changeSettingsKtsInsideSections() + + assertConfigurationUpdateWasDone(testFiles.settings) + } + + fun testOutsideSectionsInSettingsChange() { + assertAndLoadInitialConfiguration(testFiles.settings) + + changeSettingsKtsOutsideSections() + + assertConfigurationUpToDate(testFiles.settings) + } + private fun assertConfigurationUpToDate(file: KtFile) { scriptConfigurationManager.updater.ensureUpToDatedConfigurationSuggested(file) assertNoBackgroundTasks()