Kotlin Facet: Add "Use project settings" option

Original commit: eac0c9b2ed
This commit is contained in:
Alexey Sedunov
2016-12-13 16:38:40 +03:00
parent a4eb3ccd9d
commit e48af8ca1a
2 changed files with 12 additions and 3 deletions
@@ -113,6 +113,8 @@ class KotlinFacetSettings {
val DEFAULT_VERSION = 0 val DEFAULT_VERSION = 0
} }
var useProjectSettings: Boolean = false
var versionInfo = KotlinVersionInfo() var versionInfo = KotlinVersionInfo()
var compilerInfo = KotlinCompilerInfo() var compilerInfo = KotlinCompilerInfo()
} }
@@ -64,6 +64,7 @@ class JpsKotlinCompilerSettings : JpsElementBase<JpsKotlinCompilerSettings>() {
fun getCommonCompilerArguments(module: JpsModule): CommonCompilerArguments { fun getCommonCompilerArguments(module: JpsModule): CommonCompilerArguments {
val defaultArguments = getSettings(module.project).commonCompilerArguments val defaultArguments = getSettings(module.project).commonCompilerArguments
val facetSettings = module.kotlinFacetExtension?.settings ?: return defaultArguments val facetSettings = module.kotlinFacetExtension?.settings ?: return defaultArguments
if (facetSettings.useProjectSettings) return defaultArguments
val (languageLevel, apiLevel) = facetSettings.versionInfo val (languageLevel, apiLevel) = facetSettings.versionInfo
return facetSettings.compilerInfo.commonCompilerArguments?.apply { return facetSettings.compilerInfo.commonCompilerArguments?.apply {
languageVersion = languageLevel?.description languageVersion = languageLevel?.description
@@ -78,6 +79,7 @@ class JpsKotlinCompilerSettings : JpsElementBase<JpsKotlinCompilerSettings>() {
fun getK2JvmCompilerArguments(module: JpsModule): K2JVMCompilerArguments { fun getK2JvmCompilerArguments(module: JpsModule): K2JVMCompilerArguments {
val defaultArguments = getSettings(module.project).k2JvmCompilerArguments val defaultArguments = getSettings(module.project).k2JvmCompilerArguments
val facetSettings = module.kotlinFacetExtension?.settings ?: return defaultArguments val facetSettings = module.kotlinFacetExtension?.settings ?: return defaultArguments
if (facetSettings.useProjectSettings) return defaultArguments
val targetPlatform = facetSettings.versionInfo.targetPlatformKind as? TargetPlatformKind.Jvm ?: return defaultArguments val targetPlatform = facetSettings.versionInfo.targetPlatformKind as? TargetPlatformKind.Jvm ?: return defaultArguments
return copyBean(defaultArguments).apply { return copyBean(defaultArguments).apply {
jvmTarget = targetPlatform.version.description jvmTarget = targetPlatform.version.description
@@ -89,8 +91,10 @@ class JpsKotlinCompilerSettings : JpsElementBase<JpsKotlinCompilerSettings>() {
} }
fun getK2JsCompilerArguments(module: JpsModule): K2JSCompilerArguments { fun getK2JsCompilerArguments(module: JpsModule): K2JSCompilerArguments {
return module.kotlinFacetExtension?.settings?.compilerInfo?.k2jsCompilerArguments val defaultArguments = getSettings(module.project).k2JsCompilerArguments
?: getSettings(module.project).k2JsCompilerArguments val facetSettings = module.kotlinFacetExtension?.settings ?: return defaultArguments
if (facetSettings.useProjectSettings) return defaultArguments
return facetSettings.compilerInfo.k2jsCompilerArguments ?: defaultArguments
} }
fun setK2JsCompilerArguments(project: JpsProject, k2JsCompilerArguments: K2JSCompilerArguments) { fun setK2JsCompilerArguments(project: JpsProject, k2JsCompilerArguments: K2JSCompilerArguments) {
@@ -98,7 +102,10 @@ class JpsKotlinCompilerSettings : JpsElementBase<JpsKotlinCompilerSettings>() {
} }
fun getCompilerSettings(module: JpsModule): CompilerSettings { fun getCompilerSettings(module: JpsModule): CompilerSettings {
return module.kotlinFacetExtension?.settings?.compilerInfo?.compilerSettings ?: getSettings(module.project).compilerSettings val defaultSettings = getSettings(module.project).compilerSettings
val facetSettings = module.kotlinFacetExtension?.settings ?: return defaultSettings
if (facetSettings.useProjectSettings) return defaultSettings
return facetSettings.compilerInfo.compilerSettings ?: defaultSettings
} }
fun setCompilerSettings(project: JpsProject, compilerSettings: CompilerSettings) { fun setCompilerSettings(project: JpsProject, compilerSettings: CompilerSettings) {