From cfc6aef1d0b99cdd122bd77d6ddb816b51125168 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Thu, 27 Jul 2017 15:21:53 +0300 Subject: [PATCH] Support mutable/immutable compiler arguments Original commit: 40163868af48e18da7e22bebd399158106a91d91 --- .../org/jetbrains/kotlin/config/CompilerSettings.kt | 13 +++++++------ .../jetbrains/kotlin/config/KotlinFacetSettings.kt | 6 ++++++ .../jetbrains/kotlin/config/facetSerialization.kt | 2 +- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/jps/jps-common/src/org/jetbrains/kotlin/config/CompilerSettings.kt b/jps/jps-common/src/org/jetbrains/kotlin/config/CompilerSettings.kt index a25232cf9d9..89abfd326c0 100644 --- a/jps/jps-common/src/org/jetbrains/kotlin/config/CompilerSettings.kt +++ b/jps/jps-common/src/org/jetbrains/kotlin/config/CompilerSettings.kt @@ -17,13 +17,14 @@ package org.jetbrains.kotlin.config import com.intellij.openapi.util.text.StringUtil +import org.jetbrains.kotlin.cli.common.arguments.Freezable -class CompilerSettings { - @JvmField var additionalArguments: String = DEFAULT_ADDITIONAL_ARGUMENTS - @JvmField var scriptTemplates: String = "" - @JvmField var scriptTemplatesClasspath: String = "" - @JvmField var copyJsLibraryFiles: Boolean = true - @JvmField var outputDirectoryForJsLibraryFiles: String = DEFAULT_OUTPUT_DIRECTORY +class CompilerSettings : Freezable() { + var additionalArguments: String by FreezableVar(DEFAULT_ADDITIONAL_ARGUMENTS) + var scriptTemplates: String by FreezableVar("") + var scriptTemplatesClasspath: String by FreezableVar("") + var copyJsLibraryFiles: Boolean by FreezableVar(true) + var outputDirectoryForJsLibraryFiles: String by FreezableVar(DEFAULT_OUTPUT_DIRECTORY) companion object { val DEFAULT_ADDITIONAL_ARGUMENTS = "-version" diff --git a/jps/jps-common/src/org/jetbrains/kotlin/config/KotlinFacetSettings.kt b/jps/jps-common/src/org/jetbrains/kotlin/config/KotlinFacetSettings.kt index 0cb3d2ef86e..a63e6412787 100644 --- a/jps/jps-common/src/org/jetbrains/kotlin/config/KotlinFacetSettings.kt +++ b/jps/jps-common/src/org/jetbrains/kotlin/config/KotlinFacetSettings.kt @@ -84,7 +84,13 @@ class KotlinFacetSettings { var useProjectSettings: Boolean = true var compilerArguments: CommonCompilerArguments? = null + set(value) { + field = value?.unfrozen() as CommonCompilerArguments? + } var compilerSettings: CompilerSettings? = null + set(value) { + field = value?.unfrozen() as CompilerSettings? + } var languageLevel: LanguageVersion? get() = compilerArguments?.languageVersion?.let { LanguageVersion.fromFullVersionString(it) } diff --git a/jps/jps-common/src/org/jetbrains/kotlin/config/facetSerialization.kt b/jps/jps-common/src/org/jetbrains/kotlin/config/facetSerialization.kt index b542815b054..d6d4cd90c22 100644 --- a/jps/jps-common/src/org/jetbrains/kotlin/config/facetSerialization.kt +++ b/jps/jps-common/src/org/jetbrains/kotlin/config/facetSerialization.kt @@ -196,7 +196,7 @@ private fun Class<*>.computeNormalPropertyOrdering(): Map { private val allNormalOrderings = HashMap, Map>() private val Class<*>.normalOrdering - get() = allNormalOrderings.getOrPut(this) { computeNormalPropertyOrdering() } + get() = synchronized(allNormalOrderings) { allNormalOrderings.getOrPut(this) { computeNormalPropertyOrdering() } } // Replacing fields with delegated properties leads to unexpected reordering of entries in facet configuration XML // It happens due to XmlSerializer using different orderings for field- and method-based accessors