package lvalue_assignment open class B() { var b: Int = 2 val c: Int = 34 } class C() : B() { var x = 4 fun foo(c: C) { this.x = 34 this.b = 123 super.b = 23 this.c = 34 super.c = 3535 //repeat for 'c' getInt() = 12 } fun foo1(c: C) { super.c = 34 } fun bar(c: C) { this = c //should be an error } } fun getInt() = 0 class D() { inner class B() { fun foo() { this@D = D() } } } fun foo(): Unit {} fun cannotBe() { var i: Int = 5 z = 30; "" = ""; foo() = Unit; (i as Int) = 34 (i is Int) = false A() = A() 5 = 34 } fun canBe(i0: Int, j: Int) { var i = i0 (label@ i) = 34 (label@ j) = 34 //repeat for j val a = A() (l@ a.a) = 3894 } fun canBe2(j: Int) { (label@ j) = 34 } class A() { var a: Int = 3 } class Test() { fun testIllegalValues() { 1 += 23 (l@ 1) += 23 getInt() += 343 (f@ getInt()) += 343 1++ (r@ 1)++ getInt()++ (m@ getInt())++ this++ var s : String = "r" s += "ss" s += this s += (a@ 2) } fun testIncompleteSyntax() { val s = "s" ++s. } fun testVariables() { var a: Int = 34 val b: Int = 34 a += 34 (l@ a) += 34 b += 34 a++ (l@ a)++ (a)++ } fun testVariables1() { val b: Int = 34 (l@ b) += 34 //repeat for b (b) += 3 } fun testArrays(a: Array, ab: Ab) { a[3] = 4 a[4]++ a[6] += 43 ab.getArray()[54] = 23 ab.getArray()[54]++ (f@ a)[3] = 4 this[54] = 34 } } fun Array.checkThis() { this[45] = 34 this[352]++ this[35] += 234 } abstract class Ab { abstract fun getArray() : Array }