[FIR] Desugar increment/decrement in body resolve phase

The expression needs to be resolved first to determine if there is a
receiver that needs to be extracted to a temporary variable. Also, the
special case for prefix increment/decrement on local variable without
delegates requires resolution to check if the variable is local.

^KT-56771 Fixed
^KT-56659 Fixed
This commit is contained in:
Kirill Rakhman
2023-02-21 16:24:34 +01:00
committed by Space Team
parent 5ecf9cce25
commit 3b9724d20e
77 changed files with 1171 additions and 553 deletions
+4 -1
View File
@@ -1,3 +1,6 @@
// IGNORE_BACKEND_K2: ANY
// Behavior changed in K2, see KT-42077
public var inc: Int = 0
public var propInc: Int = 0
@@ -26,4 +29,4 @@ fun box(): String {
if (propDec != -1) return "fail in prefix decrement: ${propDec} != -1"
return "OK"
}
}
@@ -0,0 +1,34 @@
// IGNORE_BACKEND_K1: ANY
// Behavior changed in K2, see KT-42077
// IGNORE_BACKEND: WASM
// SKIP_NODE_JS
public var inc: Int = 0
public var propInc: Int = 0
get() {++inc; return field}
set(a: Int) {
++inc
field = a
}
public var dec: Int = 0
public var propDec: Int = 0
get() { --dec; return field}
set(a: Int) {
--dec
field = a
}
fun box(): String {
++propInc
if (inc != 2) return "fail in prefix increment: ${inc} != 2"
if (propInc != 1) return "fail in prefix increment: ${propInc} != 1"
--propDec
if (dec != -2) return "fail in prefix decrement: ${dec} != -2"
if (propDec != -1) return "fail in prefix decrement: ${propDec} != -1"
return "OK"
}