var p: Int = 0 val arr = intArrayOf(1, 2, 3) class C { var p: Int = 0 operator fun get(i: Int) = i operator fun set(i: Int, value: Int) {} } object O { var p: Int = 0 operator fun get(i: Int) = i operator fun set(i: Int, value: Int) {} } fun testVarPrefix() { var x = 0 val x1 = ++x val x2 = --x } fun testVarPostfix() { var x = 0 val x1 = x++ val x2 = x-- } fun testPropPrefix() { val p1 = ++p val p2 = --p } fun testPropPostfix() { val p1 = p++ val p2 = p-- } fun testArrayPrefix() { val a1 = ++arr[0] val a2 = --arr[0] } fun testArrayPostfix() { val a1 = arr[0]++ val a2 = arr[0]-- } fun testClassPropPrefix() { val p1 = ++C().p val p2 = --C().p } fun testClassPropPostfix() { val p1 = C().p++ val p2 = C().p-- } fun testClassOperatorPrefix() { val a1 = ++C()[0] val a2 = --C()[0] } fun testClassOperatorPostfix() { val a1 = C()[0]++ val a2 = C()[0]-- } fun testObjectPropPrefix() { val p1 = ++O.p val p2 = --O.p } fun testObjectPropPostfix() { val p1 = O.p++ val p2 = O.p-- } fun testObjectOperatorPrefix() { val a1 = ++O[0] val a2 = --O[0] } fun testObjectOperatorPostfix() { val a1 = O[0]++ val a2 = O[0]-- }