Add isFrozen test on object

This commit is contained in:
Alexander Shabalin
2021-06-09 15:03:15 +00:00
committed by Space
parent 48a4d7d418
commit b1e0e43ba4
3 changed files with 44 additions and 4 deletions
@@ -1182,7 +1182,6 @@ task enum_nested(type: KonanLocalTest) {
}
task enum_isFrozen(type: KonanLocalTest) {
goldValue = isExperimentalMM ? "false\n" : "true\n"
source = "codegen/enum/isFrozen.kt"
}
@@ -1277,6 +1276,10 @@ standaloneTest("objectDeclaration_globalConstants") {
source = "codegen/objectDeclaration/globalConstants.kt"
}
task object_isFrozen(type: KonanLocalTest) {
source = "codegen/objectDeclaration/isFrozen.kt"
}
task localClass_objectExpressionInProperty(type: KonanLocalTest) {
goldValue = "OK\n"
source = "codegen/localClass/objectExpressionInProperty.kt"
@@ -8,11 +8,21 @@ package codegen.enum.isFrozen
import kotlin.test.*
import kotlin.native.concurrent.*
enum class Zzz(val zzz: String) {
enum class Zzz(val zzz: String, var value: Int = 0) {
Z1("z1"),
Z2("z2")
}
@Test fun runTest() {
println(Zzz.Z1.isFrozen)
}
if (Platform.memoryModel == MemoryModel.STRICT) {
assertTrue(Zzz.Z1.isFrozen)
assertFailsWith<InvalidMutabilityException> {
Zzz.Z1.value = 42
}
assertEquals(0, Zzz.Z1.value)
} else {
assertFalse(Zzz.Z1.isFrozen)
Zzz.Z1.value = 42
assertEquals(42, Zzz.Z1.value)
}
}
@@ -0,0 +1,27 @@
/*
* Copyright 2010-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the LICENSE file.
*/
package codegen.objectDeclaration.isFrozen
import kotlin.test.*
import kotlin.native.concurrent.*
object X {
var value: Int = 0
}
@Test fun runTest() {
if (Platform.memoryModel == MemoryModel.STRICT) {
assertTrue(X.isFrozen)
assertFailsWith<InvalidMutabilityException> {
X.value = 42
}
assertEquals(0, X.value)
} else {
assertFalse(X.isFrozen)
X.value = 42
assertEquals(42, X.value)
}
}