From 79335cb0645f1dfd2eb537d6717684ea5c8e4ebf Mon Sep 17 00:00:00 2001 From: Vladimir Dolzhenko Date: Mon, 3 Nov 2025 18:19:52 +0100 Subject: [PATCH] [kotlin] KTIJ-36183 Apply compiler plugin to submodules GitOrigin-RevId: 94e0de081b74640d6cd51e541e10d6098cae3c51 --- ...otlinCompilerPluginProjectConfigurators.kt | 38 +++++++++++-------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/plugins/kotlin/gradle/gradle-java/src/org/jetbrains/kotlin/idea/gradleJava/configuration/gradleKotlinCompilerPluginProjectConfigurators.kt b/plugins/kotlin/gradle/gradle-java/src/org/jetbrains/kotlin/idea/gradleJava/configuration/gradleKotlinCompilerPluginProjectConfigurators.kt index 5b80da641a6b..130c54be23b2 100644 --- a/plugins/kotlin/gradle/gradle-java/src/org/jetbrains/kotlin/idea/gradleJava/configuration/gradleKotlinCompilerPluginProjectConfigurators.kt +++ b/plugins/kotlin/gradle/gradle-java/src/org/jetbrains/kotlin/idea/gradleJava/configuration/gradleKotlinCompilerPluginProjectConfigurators.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.idea.configuration.KotlinCompilerPluginProjectConfig import org.jetbrains.kotlin.idea.framework.ui.ConfigureDialogWithModulesAndVersion.Companion.defaultKotlinVersion import org.jetbrains.kotlin.idea.gradle.KotlinIdeaGradleBundle import org.jetbrains.kotlin.idea.gradleCodeInsightCommon.GradleBuildScriptSupport +import org.jetbrains.kotlin.idea.gradleCodeInsightCommon.getBuildScriptPsiFile import org.jetbrains.kotlin.idea.gradleCodeInsightCommon.getTopLevelBuildScriptPsiFile import org.jetbrains.kotlin.idea.util.application.executeWriteCommand import org.jetbrains.kotlin.psi.KtFile @@ -20,27 +21,34 @@ abstract class AbstractGradleKotlinCompilerPluginProjectConfigurator(private val override fun configureModule(module: Module): PsiFile? { val project = module.project val changedFiles = ChangedConfiguratorFiles() - val file = project.getTopLevelBuildScriptPsiFile() ?: return null + + val topLevelFile = project.getTopLevelBuildScriptPsiFile() ?: return null + val moduleFile = module.getBuildScriptPsiFile().takeIf { it != topLevelFile } coroutineScope.launchTracked { edtWriteAction { - project.executeWriteCommand(KotlinIdeaGradleBundle.message("command.name.configure.0", file.name), null) { - val manipulator = GradleBuildScriptSupport.getManipulator(file) - val version = - manipulator.getKotlinVersionFromBuildScript() ?: defaultKotlinVersion - manipulator.configureBuildScripts( - kotlinPluginName, - getKotlinPluginExpression(file is KtFile), - PathUtil.KOTLIN_JAVA_STDLIB_NAME, - addVersion = true, - version = version, - jvmTarget = null, - changedFiles = changedFiles - ) + project.executeWriteCommand(KotlinIdeaGradleBundle.message("command.name.configure.0", topLevelFile.name), null) { + topLevelFile.add(addVersion = true, changedFiles = changedFiles) + moduleFile?.add(addVersion = false, changedFiles = changedFiles) } } } - return file + return moduleFile ?: topLevelFile + } + + private fun PsiFile.add(addVersion: Boolean, changedFiles: ChangedConfiguratorFiles) { + val manipulator = GradleBuildScriptSupport.getManipulator(this) + val version = + manipulator.getKotlinVersionFromBuildScript() ?: defaultKotlinVersion + manipulator.configureBuildScripts( + kotlinPluginName, + getKotlinPluginExpression(this is KtFile), + PathUtil.KOTLIN_JAVA_STDLIB_NAME, + addVersion = addVersion, + version = version, + jvmTarget = null, + changedFiles = changedFiles + ) } protected abstract val kotlinPluginName: String