diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPGradleProjectResolver.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPGradleProjectResolver.kt index 979240d6c97..5ee6434052e 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPGradleProjectResolver.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPGradleProjectResolver.kt @@ -652,6 +652,8 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() { ManualLanguageFeatureSetting(feature, LanguageFeature.State.ENABLED, arg) } it.useExperimental = languageSettings.experimentalAnnotationsInUse.toTypedArray() + it.pluginOptions = languageSettings.compilerPluginArguments.toTypedArray() + it.pluginClasspaths = languageSettings.compilerPluginClasspath.map(File::getPath).toTypedArray() } } } diff --git a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModel.kt b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModel.kt index 40f8728c24a..6914ef70903 100644 --- a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModel.kt +++ b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModel.kt @@ -38,6 +38,8 @@ interface KotlinLanguageSettings : Serializable { val isProgressiveMode: Boolean val enabledLanguageFeatures: Set val experimentalAnnotationsInUse: Set + val compilerPluginArguments: List + val compilerPluginClasspath: Set } interface KotlinCompilationOutput : Serializable { diff --git a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt index a81ed5cdc6e..0fd7636d063 100644 --- a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt +++ b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt @@ -113,13 +113,17 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService { val getProgressiveMode = languageSettingsClass.getMethodOrNull("getProgressiveMode") ?: return null val getEnabledLanguageFeatures = languageSettingsClass.getMethodOrNull("getEnabledLanguageFeatures") ?: return null val getExperimentalAnnotationsInUse = languageSettingsClass.getMethodOrNull("getExperimentalAnnotationsInUse") + val getCompilerPluginArguments = languageSettingsClass.getMethodOrNull("getCompilerPluginArguments") + val getCompilerPluginClasspath = languageSettingsClass.getMethodOrNull("getCompilerPluginClasspath") @Suppress("UNCHECKED_CAST") return KotlinLanguageSettingsImpl( getLanguageVersion(gradleLanguageSettings) as? String, getApiVersion(gradleLanguageSettings) as? String, getProgressiveMode(gradleLanguageSettings) as? Boolean ?: false, getEnabledLanguageFeatures(gradleLanguageSettings) as? Set ?: emptySet(), - getExperimentalAnnotationsInUse?.invoke(gradleLanguageSettings) as? Set ?: emptySet() + getExperimentalAnnotationsInUse?.invoke(gradleLanguageSettings) as? Set ?: emptySet(), + getCompilerPluginArguments?.invoke(gradleLanguageSettings) as? List ?: emptyList(), + (getCompilerPluginClasspath?.invoke(gradleLanguageSettings) as? FileCollection)?.files ?: emptySet() ) } diff --git a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt.173 b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt.173 index f3396e6bfb4..c430dcd3444 100644 --- a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt.173 +++ b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt.173 @@ -112,13 +112,17 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService { val getProgressiveMode = languageSettingsClass.getMethodOrNull("getProgressiveMode") ?: return null val getEnabledLanguageFeatures = languageSettingsClass.getMethodOrNull("getEnabledLanguageFeatures") ?: return null val getExperimentalAnnotationsInUse = languageSettingsClass.getMethodOrNull("getExperimentalAnnotationsInUse") + val getCompilerPluginArguments = languageSettingsClass.getMethodOrNull("getCompilerPluginArguments") + val getCompilerPluginClasspath = languageSettingsClass.getMethodOrNull("getCompilerPluginClasspath") @Suppress("UNCHECKED_CAST") return KotlinLanguageSettingsImpl( getLanguageVersion(gradleLanguageSettings) as? String, getApiVersion(gradleLanguageSettings) as? String, getProgressiveMode(gradleLanguageSettings) as? Boolean ?: false, getEnabledLanguageFeatures(gradleLanguageSettings) as? Set ?: emptySet(), - getExperimentalAnnotationsInUse?.invoke(gradleLanguageSettings) as? Set ?: emptySet() + getExperimentalAnnotationsInUse?.invoke(gradleLanguageSettings) as? Set ?: emptySet(), + getCompilerPluginArguments?.invoke(gradleLanguageSettings) as? List ?: emptyList(), + (getCompilerPluginClasspath?.invoke(gradleLanguageSettings) as? FileCollection)?.files ?: emptySet() ) } diff --git a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt.181 b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt.181 index 87484c81204..209a2f8906b 100644 --- a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt.181 +++ b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt.181 @@ -113,13 +113,17 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService { val getProgressiveMode = languageSettingsClass.getMethodOrNull("getProgressiveMode") ?: return null val getEnabledLanguageFeatures = languageSettingsClass.getMethodOrNull("getEnabledLanguageFeatures") ?: return null val getExperimentalAnnotationsInUse = languageSettingsClass.getMethodOrNull("getExperimentalAnnotationsInUse") + val getCompilerPluginArguments = languageSettingsClass.getMethodOrNull("getCompilerPluginArguments") + val getCompilerPluginClasspath = languageSettingsClass.getMethodOrNull("getCompilerPluginClasspath") @Suppress("UNCHECKED_CAST") return KotlinLanguageSettingsImpl( getLanguageVersion(gradleLanguageSettings) as? String, getApiVersion(gradleLanguageSettings) as? String, getProgressiveMode(gradleLanguageSettings) as? Boolean ?: false, getEnabledLanguageFeatures(gradleLanguageSettings) as? Set ?: emptySet(), - getExperimentalAnnotationsInUse?.invoke(gradleLanguageSettings) as? Set ?: emptySet() + getExperimentalAnnotationsInUse?.invoke(gradleLanguageSettings) as? Set ?: emptySet(), + getCompilerPluginArguments?.invoke(gradleLanguageSettings) as? List ?: emptyList(), + (getCompilerPluginClasspath?.invoke(gradleLanguageSettings) as? FileCollection)?.files ?: emptySet() ) } diff --git a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt.as31 b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt.as31 index f3396e6bfb4..c430dcd3444 100644 --- a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt.as31 +++ b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt.as31 @@ -112,13 +112,17 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService { val getProgressiveMode = languageSettingsClass.getMethodOrNull("getProgressiveMode") ?: return null val getEnabledLanguageFeatures = languageSettingsClass.getMethodOrNull("getEnabledLanguageFeatures") ?: return null val getExperimentalAnnotationsInUse = languageSettingsClass.getMethodOrNull("getExperimentalAnnotationsInUse") + val getCompilerPluginArguments = languageSettingsClass.getMethodOrNull("getCompilerPluginArguments") + val getCompilerPluginClasspath = languageSettingsClass.getMethodOrNull("getCompilerPluginClasspath") @Suppress("UNCHECKED_CAST") return KotlinLanguageSettingsImpl( getLanguageVersion(gradleLanguageSettings) as? String, getApiVersion(gradleLanguageSettings) as? String, getProgressiveMode(gradleLanguageSettings) as? Boolean ?: false, getEnabledLanguageFeatures(gradleLanguageSettings) as? Set ?: emptySet(), - getExperimentalAnnotationsInUse?.invoke(gradleLanguageSettings) as? Set ?: emptySet() + getExperimentalAnnotationsInUse?.invoke(gradleLanguageSettings) as? Set ?: emptySet(), + getCompilerPluginArguments?.invoke(gradleLanguageSettings) as? List ?: emptyList(), + (getCompilerPluginClasspath?.invoke(gradleLanguageSettings) as? FileCollection)?.files ?: emptySet() ) } diff --git a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelImpl.kt b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelImpl.kt index faf3e9d56c9..94240eece31 100644 --- a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelImpl.kt +++ b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelImpl.kt @@ -29,7 +29,9 @@ class KotlinLanguageSettingsImpl( override val apiVersion: String?, override val isProgressiveMode: Boolean, override val enabledLanguageFeatures: Set, - override val experimentalAnnotationsInUse: Set + override val experimentalAnnotationsInUse: Set, + override val compilerPluginArguments: List, + override val compilerPluginClasspath: Set ) : KotlinLanguageSettings class KotlinCompilationOutputImpl(