[K/N] Disable freezing by default, if memory model is experimental

This commit is contained in:
Pavel Kunyavskiy
2022-01-19 16:16:22 +03:00
committed by Space
parent 3798920183
commit 80b50f5452
2 changed files with 6 additions and 7 deletions
@@ -29,8 +29,4 @@ enum class Freezing(val enableFreezeAtRuntime: Boolean, val freezeImplicit: Bool
*/
Disabled(false, false, false);
companion object {
// Users might depend on runtime guarantees of freezing, so it should be enabled by default.
val Default = Full
}
}
@@ -100,12 +100,15 @@ class KonanConfig(val project: Project, val configuration: CompilerConfiguration
val freezing: Freezing by lazy {
val freezingMode = configuration.get(BinaryOptions.freezing)
when {
freezingMode == null -> Freezing.Default
memoryModel != MemoryModel.EXPERIMENTAL && freezingMode != Freezing.Default -> {
freezingMode == null -> when (memoryModel) {
MemoryModel.EXPERIMENTAL -> Freezing.Disabled
else -> Freezing.Full
}
memoryModel != MemoryModel.EXPERIMENTAL && freezingMode != Freezing.Full -> {
configuration.report(
CompilerMessageSeverity.ERROR,
"`freezing` can only be adjusted with experimental MM. Falling back to default behavior.")
Freezing.Default
Freezing.Full
}
else -> freezingMode
}