[Compiler CLI] Sort flags and features before appending them to string
JS IR BE incremental compilation infrastructure uses LanguageVersionSettings::toString method to detect if any compiler features or flags were enabled or disabled. It is important that the features and flags order are stable in the result string. ^KT-56580 Fixed
This commit is contained in:
committed by
Space Team
parent
df450ac43c
commit
43cef114c6
+3
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.ir.backend.js.ic
|
||||
|
||||
import org.jetbrains.kotlin.backend.common.serialization.Hash128Bits
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.config.KotlinCompilerVersion
|
||||
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||
import org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.CrossModuleReferences
|
||||
import org.jetbrains.kotlin.ir.IrElement
|
||||
@@ -87,6 +88,8 @@ internal class ICHasher {
|
||||
private val hashCalculator = HashCalculatorForIC()
|
||||
|
||||
fun calculateConfigHash(config: CompilerConfiguration): ICHash {
|
||||
hashCalculator.update(KotlinCompilerVersion.VERSION)
|
||||
|
||||
val importantSettings = listOf(
|
||||
JSConfigurationKeys.GENERATE_DTS,
|
||||
JSConfigurationKeys.MODULE_KIND,
|
||||
|
||||
@@ -538,7 +538,7 @@ class LanguageVersionSettingsImpl @JvmOverloads constructor(
|
||||
|
||||
override fun toString() = buildString {
|
||||
append("Language = $languageVersion, API = $apiVersion")
|
||||
specificFeatures.forEach { (feature, state) ->
|
||||
specificFeatures.entries.sortedBy { (feature, _) -> feature.ordinal }.forEach { (feature, state) ->
|
||||
val char = when (state) {
|
||||
LanguageFeature.State.ENABLED -> '+'
|
||||
LanguageFeature.State.ENABLED_WITH_WARNING -> '~'
|
||||
@@ -546,7 +546,7 @@ class LanguageVersionSettingsImpl @JvmOverloads constructor(
|
||||
}
|
||||
append(" $char$feature")
|
||||
}
|
||||
analysisFlags.forEach { (flag, value) ->
|
||||
analysisFlags.entries.sortedBy { (flag, _) -> flag.toString() }.forEach { (flag, value) ->
|
||||
append(" $flag:$value")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user