Allow to call += on a val
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
class A() {
|
||||
var x = 0
|
||||
}
|
||||
|
||||
fun A.plusAssign(y: Int) { x += y }
|
||||
fun A.minusAssign(y: Int) { x -= y }
|
||||
fun A.timesAssign(y: Int) { x *= y }
|
||||
fun A.divAssign(y: Int) { x /= y }
|
||||
fun A.modAssign(y: Int) { x %= y }
|
||||
|
||||
fun box(): String {
|
||||
val original = A()
|
||||
val a = original
|
||||
|
||||
a += 1
|
||||
if (!(a identityEquals original)) return "Fail 1: $a !== $original"
|
||||
if (a.x != 1) return "Fail 2: ${a.x} != 1"
|
||||
|
||||
a -= 2
|
||||
if (!(a identityEquals original)) return "Fail 3: $a !== $original"
|
||||
if (a.x != -1) return "Fail 4: ${a.x} != -1"
|
||||
|
||||
a *= -10
|
||||
if (!(a identityEquals original)) return "Fail 5: $a !== $original"
|
||||
if (a.x != 10) return "Fail 6: ${a.x} != 10"
|
||||
|
||||
a /= 3
|
||||
if (!(a identityEquals original)) return "Fail 7: $a !== $original"
|
||||
if (a.x != 3) return "Fail 8: ${a.x} != 3"
|
||||
|
||||
a %= 2
|
||||
if (!(a identityEquals original)) return "Fail 9: $a !== $original"
|
||||
if (a.x != 1) return "Fail 10: ${a.x} != 1"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
class A {
|
||||
fun plusAssign(<!UNUSED_PARAMETER!>x<!>: Int) {}
|
||||
fun minusAssign(<!UNUSED_PARAMETER!>x<!>: Int) {}
|
||||
fun timesAssign(<!UNUSED_PARAMETER!>x<!>: Int) {}
|
||||
fun divAssign(<!UNUSED_PARAMETER!>x<!>: Int) {}
|
||||
fun modAssign(<!UNUSED_PARAMETER!>x<!>: Int) {}
|
||||
}
|
||||
|
||||
fun testVal() {
|
||||
val a = A()
|
||||
a += 1
|
||||
a -= 1
|
||||
a *= 1
|
||||
a /= 1
|
||||
a %= 1
|
||||
}
|
||||
|
||||
fun testExpr() {
|
||||
A() += 1
|
||||
A() -= 1
|
||||
A() *= 1
|
||||
A() /= 1
|
||||
A() %= 1
|
||||
}
|
||||
|
||||
class B {
|
||||
fun plus(<!UNUSED_PARAMETER!>x<!>: Int): B = B()
|
||||
fun minus(<!UNUSED_PARAMETER!>x<!>: Int): B = B()
|
||||
fun times(<!UNUSED_PARAMETER!>x<!>: Int): B = B()
|
||||
fun div(<!UNUSED_PARAMETER!>x<!>: Int): B = B()
|
||||
fun mod(<!UNUSED_PARAMETER!>x<!>: Int): B = B()
|
||||
}
|
||||
|
||||
fun testWrong() {
|
||||
<!VARIABLE_EXPECTED!>B()<!> += 1
|
||||
<!VARIABLE_EXPECTED!>B()<!> -= 1
|
||||
<!VARIABLE_EXPECTED!>B()<!> *= 1
|
||||
<!VARIABLE_EXPECTED!>B()<!> /= 1
|
||||
<!VARIABLE_EXPECTED!>B()<!> %= 1
|
||||
}
|
||||
Reference in New Issue
Block a user