From 9122bb373faa999e0ed2659adc8ae40d17b2dcf4 Mon Sep 17 00:00:00 2001 From: svtk Date: Mon, 24 Oct 2011 18:53:51 +0400 Subject: [PATCH] Added tests for 'uninitialized vars'; 'vals reassignment' (for simple flow) --- .../full/FlowAnalyseVariables.jet | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 compiler/testData/checkerWithErrorTypes/full/FlowAnalyseVariables.jet diff --git a/compiler/testData/checkerWithErrorTypes/full/FlowAnalyseVariables.jet b/compiler/testData/checkerWithErrorTypes/full/FlowAnalyseVariables.jet new file mode 100644 index 00000000000..81a49d26b02 --- /dev/null +++ b/compiler/testData/checkerWithErrorTypes/full/FlowAnalyseVariables.jet @@ -0,0 +1,99 @@ +namespace uninitialized_vals { + +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) + + 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) + } +} + +fun doSmth(s: String) {} +fun doSmth(i: Int) {} + +} + +namespace 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 t2() { + val x: ProtocolState = ProtocolState.WAITING + x = x.signal() + x = x.signal() +} + +fun t3() { + val x = 1 + x += 2 + val y = 3 + y *= 4 + var z = 5 + z -= y +} + +fun t4() { + for (i in 0..2) { + i += 1 + fun t5() { + i += 3 + } + } +} + +} \ No newline at end of file