[K/N] Add tests for -Xbinary=freezing=...

This commit is contained in:
Sergey Bogolepov
2021-08-28 14:44:04 +07:00
committed by Space
parent 4b5a7c6646
commit 587146679d
2 changed files with 90 additions and 0 deletions
@@ -3338,6 +3338,36 @@ standaloneTest("mpp_optional_expectation") {
]
}
standaloneTest("freezing_control_basic_full") {
enabled = isExperimentalMM
source = "runtime/freezing_control/basic.kt"
flags = [
'-Xbinary=freezing=full',
'-friend-modules', project.rootProject.file("${UtilsKt.getKotlinNativeDist(project)}/klib/common/stdlib").absolutePath
]
arguments = ['full']
}
standaloneTest("freezing_control_basic_disabled") {
enabled = isExperimentalMM
source = "runtime/freezing_control/basic.kt"
flags = [
'-Xbinary=freezing=disabled',
'-friend-modules', project.rootProject.file("${UtilsKt.getKotlinNativeDist(project)}/klib/common/stdlib").absolutePath
]
arguments = ['disabled']
}
standaloneTest("freezing_control_basic_explicitOnly") {
enabled = isExperimentalMM
source = "runtime/freezing_control/basic.kt"
flags = [
'-Xbinary=freezing=explicitOnly',
'-friend-modules', project.rootProject.file("${UtilsKt.getKotlinNativeDist(project)}/klib/common/stdlib").absolutePath
]
arguments = ['explicitOnly']
}
task unit1(type: KonanLocalTest) {
goldValue = "First\nkotlin.Unit\n"
source = "codegen/basics/unit1.kt"
@@ -0,0 +1,60 @@
/*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
import kotlin.test.*
import kotlin.native.concurrent.*
import kotlin.native.internal.Frozen
class NonFrozenClass
@Frozen
class FrozenClass
val globalNonFrozen = NonFrozenClass()
@SharedImmutable
val sharedImmutableNonFrozen = NonFrozenClass()
val globalFrozen = FrozenClass()
@SharedImmutable
val sharedImmutableFrozen = FrozenClass()
fun main(args: Array<String>) {
val mode = args.first()
val localNonFrozen = NonFrozenClass()
val localFrozen = FrozenClass()
when (mode) {
"full" -> {
checkFreezeCheck(localNonFrozen, false, true)
checkFreezeCheck(localFrozen, true, true)
checkFreezeCheck(globalNonFrozen, false, true)
checkFreezeCheck(sharedImmutableNonFrozen, true, true)
checkFreezeCheck(globalFrozen, true, true)
checkFreezeCheck(sharedImmutableFrozen, true, true)
}
"disabled" -> {
checkFreezeCheck(localNonFrozen, false, false)
checkFreezeCheck(localFrozen, false, false)
checkFreezeCheck(globalNonFrozen, false, false)
checkFreezeCheck(sharedImmutableNonFrozen, false, false)
checkFreezeCheck(globalFrozen, false, false)
checkFreezeCheck(sharedImmutableFrozen, false, false)
}
"explicitOnly" -> {
checkFreezeCheck(localNonFrozen, false, true)
checkFreezeCheck(localFrozen, false, true)
checkFreezeCheck(globalNonFrozen, false, true)
checkFreezeCheck(sharedImmutableNonFrozen, false, true)
checkFreezeCheck(globalFrozen, false, true)
checkFreezeCheck(sharedImmutableFrozen, false, true)
}
}
}
private fun checkFreezeCheck(arg: Any, isFrozenBefore: Boolean, isFrozenAfter: Boolean) {
assertEquals(isFrozenBefore, arg.isFrozen)
arg.freeze()
assertEquals(isFrozenAfter, arg.isFrozen)
}