From cde7cf2caf932517a45a2ef3a38f0fa67eb9dd35 Mon Sep 17 00:00:00 2001 From: sergeych Date: Mon, 9 Feb 2026 10:06:39 +0300 Subject: [PATCH] Add optional inc/dec bytecode tests --- .../kotlin/BytecodeRecentOpsTest.kt | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/lynglib/src/commonTest/kotlin/BytecodeRecentOpsTest.kt b/lynglib/src/commonTest/kotlin/BytecodeRecentOpsTest.kt index b7da5f0..529d455 100644 --- a/lynglib/src/commonTest/kotlin/BytecodeRecentOpsTest.kt +++ b/lynglib/src/commonTest/kotlin/BytecodeRecentOpsTest.kt @@ -88,4 +88,42 @@ class BytecodeRecentOpsTest { """.trimIndent() ) } + + @Test + fun optionalIndexIncDecSkipsOnNullReceiver() = runTest { + eval( + """ + var count = 0 + fun idx() { count = count + 1; return 1 } + var a: List? = null + val r = a?[idx()]++ + assertEquals(null, r) + assertEquals(0, count) + """.trimIndent() + ) + } + + @Test + fun optionalIndexIncDecUpdatesOnNonNullReceiver() = runTest { + eval( + """ + var a = [1, 2, 3] + val r = a?[1]++ + assertEquals(2, r) + assertEquals(3, a[1]) + """.trimIndent() + ) + } + + @Test + fun optionalClassScopeIncDec() = runTest { + eval( + """ + class C { static var x = 1 } + val r = C?.x++ + assertEquals(1, r) + assertEquals(2, C.x) + """.trimIndent() + ) + } }