package uninitialized_reassigned_variables fun doSmth(s: String) {} fun doSmth(i: Int) {} // ------------------------------------------------ // uninitialized variables fun t1(b : Boolean) { val v : Int if (v == 0) {} var u: String if (b) { u = "s" } doSmth(u) var r: String if (b) { r = "s" } else { r = "tg" } doSmth(r) var t: String if (b) doSmth(t) else t = "ss" doSmth(t) //repeat for t val i = 3 doSmth(i) if (b) { return; } doSmth(i) if (i is Int) { return; } } fun t2() { val s = "ss" for (i in 0..2) { doSmth(s) } } class A() {} fun t4(a: A) { a = A() } // ------------------------------------------------ // reassigned vals fun t1() { val a : Int = 1 a = 2 var b : Int = 1 b = 3 } abstract enum class ProtocolState { WAITING { override fun signal() = ProtocolState.TALKING } TALKING { override fun signal() = ProtocolState.WAITING } abstract fun signal() : ProtocolState } fun t3() { val x: ProtocolState = ProtocolState.WAITING x = x.signal() x = x.signal() //repeat for x } fun t4() { val x = 1 x += 2 val y = 3 y *= 4 var z = 5 z -= y } fun t5() { for (i in 0..2) { i += 1 fun t5() { i += 3 } } } // ------------------------------------------------ // backing fields var x = 10 val y = 10 val z = 10 class AnonymousInitializers(var a: String, val b: String) { { $a = "30" a = "s" $b = "3" b = "tt" //repeat for b } val i: Int { $i = 121 } { x = 11 z = 10 } val j: Int get() = 20 { $i = 13 $j = 30 j = 34 } val k: String { if (1 < 3) { k = "a" } else { $k = "b" } } val l: String { if (1 < 3) { $l = "a" } else { $l = "b" } } val o: String { if (1 < 3) { $o = "a" } } var m: Int = 30 { $m = 400 } val n: Int { while (n == 0) { } $n = 10 while (n == 0) { } } var p = 1 { p++ } } fun reassignFunParams(a: Int) { a = 1 } open class Open(a: Int, w: Int) {} class LocalValsVsProperties(val a: Int, w: Int) : Open(a, w) { val x : Int val y : Int { $x = 1 val b = x } val b = a fun foo() { val r : Int doSmth(x) doSmth(y) doSmth(r) doSmth(a) } var xx = w var yy : Int { w += 1 $yy = w } } class Outer() { val a : Int var b : Int { $a = 1 $b = 1 } inner class Inner() { { a++ b++ } } fun foo() { a++ b++ } } class ForwardAccessToBackingField() { //kt-147 val a = $a // error val b = $c // error val c = 1 } class ClassObject() { class object { val x : Int { $x = 1 } fun foo() { val a : Int doSmth(a) } } } fun foo() { val a = object { val x : Int val y : Int val z : Int { $x = 1 $z = 3 } fun foo() { y = 10 z = 13 } } } class TestObjectExpression() { val a : Int fun foo() { val a = object { val x : Int val y : Int { if (true) x = 12 else $x = 1 } fun inner1() { y = 101 a = 231 } fun inner2() { y = 101 a = 231 } } } } object TestObjectDeclaration { val x : Int val y : Int { $x = 1 } fun foo() { y = 10 val i: Int if (1 < 3) { i = 10 } doSmth(i) } } fun func() { val b = 1 val a = object { val x = b { b = 4 $b = 3 } } } // ------------------------------------------------ // dot qualifiers class M() { val x = 11 var y = 12 } fun test(m : M) { m.x = 23 m.y = 23 } fun test1(m : M) { m.x++ m.y-- }