[K2] Properly evaluate complex boolean constants

Some boolean expressions could be transformed into `IrWhen`
node. To understand that this node is actually
a boolean expression, we need to analyze its origin.

#KT-62683
This commit is contained in:
Ivan Kylchik
2023-11-14 12:49:18 +01:00
committed by Space Team
parent ede77ea29c
commit 3fa82c7bb1
19 changed files with 114 additions and 9 deletions
@@ -0,0 +1,9 @@
// TARGET_BACKEND: JVM_IR
// TARGET_BACKEND: JS_IR
// TARGET_BACKEND: NATIVE
const val BOOL = <!EVALUATED("true")!>true<!>
const val BOOL_OR = <!EVALUATED("false")!>false && BOOL<!>
const val BOOL_AND = <!EVALUATED("true")!>true || BOOL<!>
const val BOOL_AND_OR = <!EVALUATED("true")!>true || false && BOOL<!>
fun box() = "OK"