KT-4152 Wrong postfix increment/decrement calculation

#KT-4152 Fixed
This commit is contained in:
Mikhael Bogdanov
2013-10-31 15:06:57 +04:00
parent 7857dc5ba9
commit ee2a30f34f
5 changed files with 152 additions and 35 deletions
@@ -0,0 +1,29 @@
public var inc: Int = 0;
public var propInc: Int = 0
get() {++inc; return $propInc}
set(a: Int) {
++inc
$propInc = a
}
public var dec: Int = 0;
public var propDec: Int = 0;
get() { --dec; return $propDec}
set(a: Int) {
--dec
$propDec = a
}
fun box(): String {
++propInc
if (inc != 3) return "fail in prefix increment: ${inc} != 3"
if (propInc != 1) return "fail in prefix increment: ${propInc} != 1"
--propDec
if (dec != -3) return "fail in prefix decrement: ${dec} != -3"
if (propDec != -1) return "fail in prefix decrement: ${propDec} != -1"
return "OK"
}
@@ -0,0 +1,41 @@
class X(var value: Long)
fun X.inc(): X {
this.value++
return this
}
fun X.dec(): X {
this.value--
return this
}
class Z {
public var counter: Int = 0;
public var prop: X = X(0)
get() {
counter++; return $prop
}
set(a: X) {
counter++
$prop = a;
}
}
fun box(): String {
var z = Z()
z.prop++
if (z.counter != 2) return "fail in postfix increment: ${z.counter} != 2"
if (z.prop.value != 1.toLong()) return "fail in postfix increment: ${z.prop.value} != 1"
z = Z()
z.prop--
if (z.counter != 2) return "fail in postfix decrement: ${z.counter} != 2"
if (z.prop.value != -1.toLong()) return "fail in postfix decrement: ${z.prop.value} != -1"
return "OK"
}
@@ -0,0 +1,29 @@
public var inc: Int = 0;
public var propInc: Int = 0
get() {inc++; return $propInc}
set(a: Int) {
inc++
$propInc = a
}
public var dec: Int = 0;
public var propDec: Int = 0;
get() { dec--; return $propDec}
set(a: Int) {
dec--
$propDec = a
}
fun box(): String {
propInc++
if (inc != 2) return "fail in postfix increment: ${inc} != 2"
if (propInc != 1) return "fail in postfix increment: ${propInc} != 1"
propDec--
if (dec != -2) return "fail in postfix decrement: ${dec} != -2"
if (propDec != -1) return "fail in postfix decrement: ${propDec} != -1"
return "OK"
}