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 6f841b4dfde..979240d6c97 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 @@ -651,6 +651,7 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() { val arg = "-XXLanguage:+$it" ManualLanguageFeatureSetting(feature, LanguageFeature.State.ENABLED, arg) } + it.useExperimental = languageSettings.experimentalAnnotationsInUse.toTypedArray() } } } diff --git a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModel.kt b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModel.kt index 6839629fdbb..40f8728c24a 100644 --- a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModel.kt +++ b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModel.kt @@ -37,6 +37,7 @@ interface KotlinLanguageSettings : Serializable { val apiVersion: String? val isProgressiveMode: Boolean val enabledLanguageFeatures: Set + val experimentalAnnotationsInUse: Set } interface KotlinCompilationOutput : Serializable { diff --git a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt index 7fb5eb2fa6a..a81ed5cdc6e 100644 --- a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt +++ b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt @@ -112,12 +112,14 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService { val getApiVersion = languageSettingsClass.getMethodOrNull("getApiVersion") ?: return null val getProgressiveMode = languageSettingsClass.getMethodOrNull("getProgressiveMode") ?: return null val getEnabledLanguageFeatures = languageSettingsClass.getMethodOrNull("getEnabledLanguageFeatures") ?: return null + val getExperimentalAnnotationsInUse = languageSettingsClass.getMethodOrNull("getExperimentalAnnotationsInUse") @Suppress("UNCHECKED_CAST") return KotlinLanguageSettingsImpl( getLanguageVersion(gradleLanguageSettings) as? String, getApiVersion(gradleLanguageSettings) as? String, getProgressiveMode(gradleLanguageSettings) as? Boolean ?: false, - getEnabledLanguageFeatures(gradleLanguageSettings) as? Set ?: emptySet() + getEnabledLanguageFeatures(gradleLanguageSettings) as? Set ?: emptySet(), + getExperimentalAnnotationsInUse?.invoke(gradleLanguageSettings) as? Set ?: emptySet() ) } diff --git a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt.173 b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt.173 index 8ea271d97b8..f3396e6bfb4 100644 --- a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt.173 +++ b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt.173 @@ -111,12 +111,14 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService { val getApiVersion = languageSettingsClass.getMethodOrNull("getApiVersion") ?: return null val getProgressiveMode = languageSettingsClass.getMethodOrNull("getProgressiveMode") ?: return null val getEnabledLanguageFeatures = languageSettingsClass.getMethodOrNull("getEnabledLanguageFeatures") ?: return null + val getExperimentalAnnotationsInUse = languageSettingsClass.getMethodOrNull("getExperimentalAnnotationsInUse") @Suppress("UNCHECKED_CAST") return KotlinLanguageSettingsImpl( getLanguageVersion(gradleLanguageSettings) as? String, getApiVersion(gradleLanguageSettings) as? String, getProgressiveMode(gradleLanguageSettings) as? Boolean ?: false, - getEnabledLanguageFeatures(gradleLanguageSettings) as? Set ?: emptySet() + getEnabledLanguageFeatures(gradleLanguageSettings) as? Set ?: emptySet(), + getExperimentalAnnotationsInUse?.invoke(gradleLanguageSettings) as? Set ?: emptySet() ) } diff --git a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt.181 b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt.181 index da8ea09d000..87484c81204 100644 --- a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt.181 +++ b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt.181 @@ -112,12 +112,14 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService { val getApiVersion = languageSettingsClass.getMethodOrNull("getApiVersion") ?: return null val getProgressiveMode = languageSettingsClass.getMethodOrNull("getProgressiveMode") ?: return null val getEnabledLanguageFeatures = languageSettingsClass.getMethodOrNull("getEnabledLanguageFeatures") ?: return null + val getExperimentalAnnotationsInUse = languageSettingsClass.getMethodOrNull("getExperimentalAnnotationsInUse") @Suppress("UNCHECKED_CAST") return KotlinLanguageSettingsImpl( getLanguageVersion(gradleLanguageSettings) as? String, getApiVersion(gradleLanguageSettings) as? String, getProgressiveMode(gradleLanguageSettings) as? Boolean ?: false, - getEnabledLanguageFeatures(gradleLanguageSettings) as? Set ?: emptySet() + getEnabledLanguageFeatures(gradleLanguageSettings) as? Set ?: emptySet(), + getExperimentalAnnotationsInUse?.invoke(gradleLanguageSettings) as? Set ?: emptySet() ) } diff --git a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt.as31 b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt.as31 index 8ea271d97b8..f3396e6bfb4 100644 --- a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt.as31 +++ b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt.as31 @@ -111,12 +111,14 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService { val getApiVersion = languageSettingsClass.getMethodOrNull("getApiVersion") ?: return null val getProgressiveMode = languageSettingsClass.getMethodOrNull("getProgressiveMode") ?: return null val getEnabledLanguageFeatures = languageSettingsClass.getMethodOrNull("getEnabledLanguageFeatures") ?: return null + val getExperimentalAnnotationsInUse = languageSettingsClass.getMethodOrNull("getExperimentalAnnotationsInUse") @Suppress("UNCHECKED_CAST") return KotlinLanguageSettingsImpl( getLanguageVersion(gradleLanguageSettings) as? String, getApiVersion(gradleLanguageSettings) as? String, getProgressiveMode(gradleLanguageSettings) as? Boolean ?: false, - getEnabledLanguageFeatures(gradleLanguageSettings) as? Set ?: emptySet() + getEnabledLanguageFeatures(gradleLanguageSettings) as? Set ?: emptySet(), + getExperimentalAnnotationsInUse?.invoke(gradleLanguageSettings) as? Set ?: emptySet() ) } diff --git a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelImpl.kt b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelImpl.kt index 20e714b0c27..faf3e9d56c9 100644 --- a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelImpl.kt +++ b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelImpl.kt @@ -28,7 +28,8 @@ class KotlinLanguageSettingsImpl( override val languageVersion: String?, override val apiVersion: String?, override val isProgressiveMode: Boolean, - override val enabledLanguageFeatures: Set + override val enabledLanguageFeatures: Set, + override val experimentalAnnotationsInUse: Set ) : KotlinLanguageSettings class KotlinCompilationOutputImpl(