diff --git a/kotlin-native/backend.native/tests/build.gradle b/kotlin-native/backend.native/tests/build.gradle index ca16a7e0f5d..292973db597 100644 --- a/kotlin-native/backend.native/tests/build.gradle +++ b/kotlin-native/backend.native/tests/build.gradle @@ -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" diff --git a/kotlin-native/backend.native/tests/codegen/enum/isFrozen.kt b/kotlin-native/backend.native/tests/codegen/enum/isFrozen.kt index b6e19af5897..33950532821 100644 --- a/kotlin-native/backend.native/tests/codegen/enum/isFrozen.kt +++ b/kotlin-native/backend.native/tests/codegen/enum/isFrozen.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) -} \ No newline at end of file + if (Platform.memoryModel == MemoryModel.STRICT) { + assertTrue(Zzz.Z1.isFrozen) + assertFailsWith { + Zzz.Z1.value = 42 + } + assertEquals(0, Zzz.Z1.value) + } else { + assertFalse(Zzz.Z1.isFrozen) + Zzz.Z1.value = 42 + assertEquals(42, Zzz.Z1.value) + } +} diff --git a/kotlin-native/backend.native/tests/codegen/objectDeclaration/isFrozen.kt b/kotlin-native/backend.native/tests/codegen/objectDeclaration/isFrozen.kt new file mode 100644 index 00000000000..6ee0a7fcfe4 --- /dev/null +++ b/kotlin-native/backend.native/tests/codegen/objectDeclaration/isFrozen.kt @@ -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 { + X.value = 42 + } + assertEquals(0, X.value) + } else { + assertFalse(X.isFrozen) + X.value = 42 + assertEquals(42, X.value) + } +}