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()