Support mutable/immutable compiler arguments

Original commit: 40163868af
This commit is contained in:
Alexey Sedunov
2017-07-27 15:21:53 +03:00
parent cf4b0a8933
commit cfc6aef1d0
3 changed files with 14 additions and 7 deletions
@@ -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"
@@ -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) }
@@ -196,7 +196,7 @@ private fun Class<*>.computeNormalPropertyOrdering(): Map<String, Int> {
private val allNormalOrderings = HashMap<Class<*>, Map<String, Int>>()
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