JPS: Copy project-level settings before use

Sharing these settings for reading/writing
between different module during JPS build
may lead to compiler settings
(plugionOptions, in particular) of several
modules to be mixed

 #KT-16888 Fixed
This commit is contained in:
Alexey Sedunov
2017-03-17 15:09:32 +03:00
parent 2e1b4cd692
commit 505a6bcbf2
@@ -63,7 +63,7 @@ class JpsKotlinCompilerSettings : JpsElementBase<JpsKotlinCompilerSettings>() {
} }
fun getCommonCompilerArguments(module: JpsModule): CommonCompilerArguments { fun getCommonCompilerArguments(module: JpsModule): CommonCompilerArguments {
val defaultArguments = getSettings(module.project).commonCompilerArguments val defaultArguments = copyBean(getSettings(module.project).commonCompilerArguments)
val facetSettings = module.kotlinFacetExtension?.settings ?: return defaultArguments val facetSettings = module.kotlinFacetExtension?.settings ?: return defaultArguments
if (facetSettings.useProjectSettings) return defaultArguments if (facetSettings.useProjectSettings) return defaultArguments
val facetArguments = facetSettings.compilerArguments ?: return defaultArguments val facetArguments = facetSettings.compilerArguments ?: return defaultArguments
@@ -80,7 +80,7 @@ class JpsKotlinCompilerSettings : JpsElementBase<JpsKotlinCompilerSettings>() {
} }
fun getK2JvmCompilerArguments(module: JpsModule): K2JVMCompilerArguments { fun getK2JvmCompilerArguments(module: JpsModule): K2JVMCompilerArguments {
val defaultArguments = getSettings(module.project).k2JvmCompilerArguments val defaultArguments = copyBean(getSettings(module.project).k2JvmCompilerArguments)
val facetSettings = module.kotlinFacetExtension?.settings ?: return defaultArguments val facetSettings = module.kotlinFacetExtension?.settings ?: return defaultArguments
if (facetSettings.useProjectSettings) return defaultArguments if (facetSettings.useProjectSettings) return defaultArguments
return facetSettings.compilerArguments as? K2JVMCompilerArguments ?: defaultArguments return facetSettings.compilerArguments as? K2JVMCompilerArguments ?: defaultArguments
@@ -91,7 +91,7 @@ class JpsKotlinCompilerSettings : JpsElementBase<JpsKotlinCompilerSettings>() {
} }
fun getK2JsCompilerArguments(module: JpsModule): K2JSCompilerArguments { fun getK2JsCompilerArguments(module: JpsModule): K2JSCompilerArguments {
val defaultArguments = getSettings(module.project).k2JsCompilerArguments val defaultArguments = copyBean(getSettings(module.project).k2JsCompilerArguments)
val facetSettings = module.kotlinFacetExtension?.settings ?: return defaultArguments val facetSettings = module.kotlinFacetExtension?.settings ?: return defaultArguments
if (facetSettings.useProjectSettings) return defaultArguments if (facetSettings.useProjectSettings) return defaultArguments
return facetSettings.compilerArguments as? K2JSCompilerArguments ?: defaultArguments return facetSettings.compilerArguments as? K2JSCompilerArguments ?: defaultArguments
@@ -102,7 +102,7 @@ class JpsKotlinCompilerSettings : JpsElementBase<JpsKotlinCompilerSettings>() {
} }
fun getCompilerSettings(module: JpsModule): CompilerSettings { fun getCompilerSettings(module: JpsModule): CompilerSettings {
val defaultSettings = getSettings(module.project).compilerSettings val defaultSettings = copyBean(getSettings(module.project).compilerSettings)
val facetSettings = module.kotlinFacetExtension?.settings ?: return defaultSettings val facetSettings = module.kotlinFacetExtension?.settings ?: return defaultSettings
if (facetSettings.useProjectSettings) return defaultSettings if (facetSettings.useProjectSettings) return defaultSettings
return facetSettings.compilerSettings ?: defaultSettings return facetSettings.compilerSettings ?: defaultSettings