From a9857f1e4115d3e7f3b8f59bcb4641a7280215af Mon Sep 17 00:00:00 2001 From: Alexey Volkov Date: Wed, 13 Sep 2023 12:43:22 +0300 Subject: [PATCH] Wrong conversion of some condition instructions with zero comparison from IR to jvm bytecode #167 --- .../kotlin/org/jacodb/testing/cfg/WhenExpr.kt | 49 ++++++++++++++++--- 1 file changed, 43 insertions(+), 6 deletions(-) diff --git a/jacodb-core/src/testFixtures/kotlin/org/jacodb/testing/cfg/WhenExpr.kt b/jacodb-core/src/testFixtures/kotlin/org/jacodb/testing/cfg/WhenExpr.kt index 12277703b..7140a9775 100644 --- a/jacodb-core/src/testFixtures/kotlin/org/jacodb/testing/cfg/WhenExpr.kt +++ b/jacodb-core/src/testFixtures/kotlin/org/jacodb/testing/cfg/WhenExpr.kt @@ -18,12 +18,49 @@ package org.jacodb.testing.cfg class WhenExpr { - val x = 1 + val nx: Any? = 0 + val nn: Any? = null + val x: Int = 0 + val y: Int = 1 - fun box() = - when (val y = x) { - in 0..2 -> "OK" - else -> "Fail: $y" - } + fun box(): String { + val ax: Any? = 0 + val an: Any? = null + val bx: Int = 0 + val by: Int = 1 + return when { + 0 != nx -> "Fail 0" + 1 == nx -> "Fail 1" + !(0 == nx) -> "Fail 2" + !(1 != nx) -> "Fail 3" + x != nx -> "Fail 4" + y == nx -> "Fail 5" + !(x == nx) -> "Fail 6" + !(y != nx) -> "Fail 7" + 0 == nn -> "Fail 8" + !(0 != nn) -> "Fail 9" + x == nn -> "Fail 10" + !(x != nn) -> "Fail 11" + 0 != ax -> "Fail 12" + 1 == ax -> "Fail 13" + !(0 == ax) -> "Fail 14" + !(1 != ax) -> "Fail 15" + x != ax -> "Fail 16" + y == ax -> "Fail 17" + !(x == ax) -> "Fail 18" + !(y != ax) -> "Fail 19" + bx != ax -> "Fail 20" + by == ax -> "Fail 21" + !(bx == ax) -> "Fail 22" + !(by != ax) -> "Fail 23" + 0 == an -> "Fail 24" + !(0 != an) -> "Fail 25" + x == an -> "Fail 26" + !(x != an) -> "Fail 27" + bx == an -> "Fail 28" + !(bx != an) -> "Fail 29" + else -> "OK" + } + } } \ No newline at end of file