Import compiler plugin options from new MPP into IDE

Issue #KT-27499 Fixed
This commit is contained in:
Sergey Igushkin
2018-10-15 21:56:33 +03:00
parent 7075509b1e
commit e103bea211
7 changed files with 27 additions and 5 deletions
@@ -652,6 +652,8 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() {
ManualLanguageFeatureSetting(feature, LanguageFeature.State.ENABLED, arg) ManualLanguageFeatureSetting(feature, LanguageFeature.State.ENABLED, arg)
} }
it.useExperimental = languageSettings.experimentalAnnotationsInUse.toTypedArray() it.useExperimental = languageSettings.experimentalAnnotationsInUse.toTypedArray()
it.pluginOptions = languageSettings.compilerPluginArguments.toTypedArray()
it.pluginClasspaths = languageSettings.compilerPluginClasspath.map(File::getPath).toTypedArray()
} }
} }
} }
@@ -38,6 +38,8 @@ interface KotlinLanguageSettings : Serializable {
val isProgressiveMode: Boolean val isProgressiveMode: Boolean
val enabledLanguageFeatures: Set<String> val enabledLanguageFeatures: Set<String>
val experimentalAnnotationsInUse: Set<String> val experimentalAnnotationsInUse: Set<String>
val compilerPluginArguments: List<String>
val compilerPluginClasspath: Set<File>
} }
interface KotlinCompilationOutput : Serializable { interface KotlinCompilationOutput : Serializable {
@@ -113,13 +113,17 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService {
val getProgressiveMode = languageSettingsClass.getMethodOrNull("getProgressiveMode") ?: return null val getProgressiveMode = languageSettingsClass.getMethodOrNull("getProgressiveMode") ?: return null
val getEnabledLanguageFeatures = languageSettingsClass.getMethodOrNull("getEnabledLanguageFeatures") ?: return null val getEnabledLanguageFeatures = languageSettingsClass.getMethodOrNull("getEnabledLanguageFeatures") ?: return null
val getExperimentalAnnotationsInUse = languageSettingsClass.getMethodOrNull("getExperimentalAnnotationsInUse") val getExperimentalAnnotationsInUse = languageSettingsClass.getMethodOrNull("getExperimentalAnnotationsInUse")
val getCompilerPluginArguments = languageSettingsClass.getMethodOrNull("getCompilerPluginArguments")
val getCompilerPluginClasspath = languageSettingsClass.getMethodOrNull("getCompilerPluginClasspath")
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
return KotlinLanguageSettingsImpl( return KotlinLanguageSettingsImpl(
getLanguageVersion(gradleLanguageSettings) as? String, getLanguageVersion(gradleLanguageSettings) as? String,
getApiVersion(gradleLanguageSettings) as? String, getApiVersion(gradleLanguageSettings) as? String,
getProgressiveMode(gradleLanguageSettings) as? Boolean ?: false, getProgressiveMode(gradleLanguageSettings) as? Boolean ?: false,
getEnabledLanguageFeatures(gradleLanguageSettings) as? Set<String> ?: emptySet(), getEnabledLanguageFeatures(gradleLanguageSettings) as? Set<String> ?: emptySet(),
getExperimentalAnnotationsInUse?.invoke(gradleLanguageSettings) as? Set<String> ?: emptySet() getExperimentalAnnotationsInUse?.invoke(gradleLanguageSettings) as? Set<String> ?: emptySet(),
getCompilerPluginArguments?.invoke(gradleLanguageSettings) as? List<String> ?: emptyList(),
(getCompilerPluginClasspath?.invoke(gradleLanguageSettings) as? FileCollection)?.files ?: emptySet()
) )
} }
@@ -112,13 +112,17 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService {
val getProgressiveMode = languageSettingsClass.getMethodOrNull("getProgressiveMode") ?: return null val getProgressiveMode = languageSettingsClass.getMethodOrNull("getProgressiveMode") ?: return null
val getEnabledLanguageFeatures = languageSettingsClass.getMethodOrNull("getEnabledLanguageFeatures") ?: return null val getEnabledLanguageFeatures = languageSettingsClass.getMethodOrNull("getEnabledLanguageFeatures") ?: return null
val getExperimentalAnnotationsInUse = languageSettingsClass.getMethodOrNull("getExperimentalAnnotationsInUse") val getExperimentalAnnotationsInUse = languageSettingsClass.getMethodOrNull("getExperimentalAnnotationsInUse")
val getCompilerPluginArguments = languageSettingsClass.getMethodOrNull("getCompilerPluginArguments")
val getCompilerPluginClasspath = languageSettingsClass.getMethodOrNull("getCompilerPluginClasspath")
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
return KotlinLanguageSettingsImpl( return KotlinLanguageSettingsImpl(
getLanguageVersion(gradleLanguageSettings) as? String, getLanguageVersion(gradleLanguageSettings) as? String,
getApiVersion(gradleLanguageSettings) as? String, getApiVersion(gradleLanguageSettings) as? String,
getProgressiveMode(gradleLanguageSettings) as? Boolean ?: false, getProgressiveMode(gradleLanguageSettings) as? Boolean ?: false,
getEnabledLanguageFeatures(gradleLanguageSettings) as? Set<String> ?: emptySet(), getEnabledLanguageFeatures(gradleLanguageSettings) as? Set<String> ?: emptySet(),
getExperimentalAnnotationsInUse?.invoke(gradleLanguageSettings) as? Set<String> ?: emptySet() getExperimentalAnnotationsInUse?.invoke(gradleLanguageSettings) as? Set<String> ?: emptySet(),
getCompilerPluginArguments?.invoke(gradleLanguageSettings) as? List<String> ?: emptyList(),
(getCompilerPluginClasspath?.invoke(gradleLanguageSettings) as? FileCollection)?.files ?: emptySet()
) )
} }
@@ -113,13 +113,17 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService {
val getProgressiveMode = languageSettingsClass.getMethodOrNull("getProgressiveMode") ?: return null val getProgressiveMode = languageSettingsClass.getMethodOrNull("getProgressiveMode") ?: return null
val getEnabledLanguageFeatures = languageSettingsClass.getMethodOrNull("getEnabledLanguageFeatures") ?: return null val getEnabledLanguageFeatures = languageSettingsClass.getMethodOrNull("getEnabledLanguageFeatures") ?: return null
val getExperimentalAnnotationsInUse = languageSettingsClass.getMethodOrNull("getExperimentalAnnotationsInUse") val getExperimentalAnnotationsInUse = languageSettingsClass.getMethodOrNull("getExperimentalAnnotationsInUse")
val getCompilerPluginArguments = languageSettingsClass.getMethodOrNull("getCompilerPluginArguments")
val getCompilerPluginClasspath = languageSettingsClass.getMethodOrNull("getCompilerPluginClasspath")
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
return KotlinLanguageSettingsImpl( return KotlinLanguageSettingsImpl(
getLanguageVersion(gradleLanguageSettings) as? String, getLanguageVersion(gradleLanguageSettings) as? String,
getApiVersion(gradleLanguageSettings) as? String, getApiVersion(gradleLanguageSettings) as? String,
getProgressiveMode(gradleLanguageSettings) as? Boolean ?: false, getProgressiveMode(gradleLanguageSettings) as? Boolean ?: false,
getEnabledLanguageFeatures(gradleLanguageSettings) as? Set<String> ?: emptySet(), getEnabledLanguageFeatures(gradleLanguageSettings) as? Set<String> ?: emptySet(),
getExperimentalAnnotationsInUse?.invoke(gradleLanguageSettings) as? Set<String> ?: emptySet() getExperimentalAnnotationsInUse?.invoke(gradleLanguageSettings) as? Set<String> ?: emptySet(),
getCompilerPluginArguments?.invoke(gradleLanguageSettings) as? List<String> ?: emptyList(),
(getCompilerPluginClasspath?.invoke(gradleLanguageSettings) as? FileCollection)?.files ?: emptySet()
) )
} }
@@ -112,13 +112,17 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService {
val getProgressiveMode = languageSettingsClass.getMethodOrNull("getProgressiveMode") ?: return null val getProgressiveMode = languageSettingsClass.getMethodOrNull("getProgressiveMode") ?: return null
val getEnabledLanguageFeatures = languageSettingsClass.getMethodOrNull("getEnabledLanguageFeatures") ?: return null val getEnabledLanguageFeatures = languageSettingsClass.getMethodOrNull("getEnabledLanguageFeatures") ?: return null
val getExperimentalAnnotationsInUse = languageSettingsClass.getMethodOrNull("getExperimentalAnnotationsInUse") val getExperimentalAnnotationsInUse = languageSettingsClass.getMethodOrNull("getExperimentalAnnotationsInUse")
val getCompilerPluginArguments = languageSettingsClass.getMethodOrNull("getCompilerPluginArguments")
val getCompilerPluginClasspath = languageSettingsClass.getMethodOrNull("getCompilerPluginClasspath")
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
return KotlinLanguageSettingsImpl( return KotlinLanguageSettingsImpl(
getLanguageVersion(gradleLanguageSettings) as? String, getLanguageVersion(gradleLanguageSettings) as? String,
getApiVersion(gradleLanguageSettings) as? String, getApiVersion(gradleLanguageSettings) as? String,
getProgressiveMode(gradleLanguageSettings) as? Boolean ?: false, getProgressiveMode(gradleLanguageSettings) as? Boolean ?: false,
getEnabledLanguageFeatures(gradleLanguageSettings) as? Set<String> ?: emptySet(), getEnabledLanguageFeatures(gradleLanguageSettings) as? Set<String> ?: emptySet(),
getExperimentalAnnotationsInUse?.invoke(gradleLanguageSettings) as? Set<String> ?: emptySet() getExperimentalAnnotationsInUse?.invoke(gradleLanguageSettings) as? Set<String> ?: emptySet(),
getCompilerPluginArguments?.invoke(gradleLanguageSettings) as? List<String> ?: emptyList(),
(getCompilerPluginClasspath?.invoke(gradleLanguageSettings) as? FileCollection)?.files ?: emptySet()
) )
} }
@@ -29,7 +29,9 @@ class KotlinLanguageSettingsImpl(
override val apiVersion: String?, override val apiVersion: String?,
override val isProgressiveMode: Boolean, override val isProgressiveMode: Boolean,
override val enabledLanguageFeatures: Set<String>, override val enabledLanguageFeatures: Set<String>,
override val experimentalAnnotationsInUse: Set<String> override val experimentalAnnotationsInUse: Set<String>,
override val compilerPluginArguments: List<String>,
override val compilerPluginClasspath: Set<File>
) : KotlinLanguageSettings ) : KotlinLanguageSettings
class KotlinCompilationOutputImpl( class KotlinCompilationOutputImpl(