Reorganize spec tests infrastructure code
- Add the tests mute system for the diagnostic tests - Move the code for the test info parsing to the separate package `parsers` - Unification of the `linked` and `not linked` spec tests - Package structure is refactored - Change the multiline comment format with a test information - Actualize `PrintSpecTestsStatistic` - Other different code improvements
This commit is contained in:
+13
-6
@@ -3,32 +3,35 @@
|
||||
// SKIP_TXT
|
||||
|
||||
/*
|
||||
KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
|
||||
|
||||
SECTION: contracts
|
||||
CATEGORIES: analysis, controlFlow, initialization
|
||||
NUMBER: 1
|
||||
DESCRIPTION: val/var reassignment and/or uninitialized variable usages based on CallsInPlace effect with wrong invocation kind
|
||||
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
|
||||
*
|
||||
* SECTIONS: contracts, analysis, controlFlow, initialization
|
||||
* NUMBER: 1
|
||||
* DESCRIPTION: val/var reassignment and/or uninitialized variable usages based on CallsInPlace effect with wrong invocation kind
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1() {
|
||||
val value_1: Int
|
||||
funWithAtLeastOnceCallsInPlace { <!VAL_REASSIGNMENT!>value_1<!> = 10 }
|
||||
value_1.inc()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2() {
|
||||
val value_1: Int
|
||||
funWithAtMostOnceCallsInPlace { value_1 = 10 }
|
||||
<!UNINITIALIZED_VARIABLE!>value_1<!>.inc()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case_3() {
|
||||
val value_1: Int
|
||||
funWithUnknownCallsInPlace { <!VAL_REASSIGNMENT!>value_1<!> = 10 }
|
||||
<!UNINITIALIZED_VARIABLE!>value_1<!>.inc()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 4
|
||||
fun case_4() {
|
||||
var value_1: Int
|
||||
var value_2: Int
|
||||
@@ -38,6 +41,7 @@ fun case_4() {
|
||||
<!UNINITIALIZED_VARIABLE!>value_2<!>.div(10)
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 5
|
||||
class case_5 {
|
||||
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val value_1: Int<!>
|
||||
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val value_2: Int<!>
|
||||
@@ -53,6 +57,7 @@ class case_5 {
|
||||
}
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 6
|
||||
fun case_6() {
|
||||
val value_1: Int
|
||||
for (i in 0..1)
|
||||
@@ -60,6 +65,7 @@ fun case_6() {
|
||||
<!UNINITIALIZED_VARIABLE!>value_1<!>.dec()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 7
|
||||
fun case_7() {
|
||||
var value_1: Int
|
||||
var i = 0
|
||||
@@ -70,6 +76,7 @@ fun case_7() {
|
||||
<!UNINITIALIZED_VARIABLE!>value_1<!>.dec()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 8
|
||||
fun case_8() {
|
||||
var value_1: Int
|
||||
if (true) funWithAtLeastOnceCallsInPlace { value_1 = 10 }
|
||||
|
||||
+9
-6
@@ -3,14 +3,14 @@
|
||||
// SKIP_TXT
|
||||
|
||||
/*
|
||||
KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
|
||||
|
||||
SECTION: contracts
|
||||
CATEGORIES: analysis, controlFlow, initialization
|
||||
NUMBER: 2
|
||||
DESCRIPTION: val/var reassignment and/or uninitialized variable usages based on nested CallsInPlace effects with wrong invocation kind
|
||||
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
|
||||
*
|
||||
* SECTIONS: contracts, analysis, controlFlow, initialization
|
||||
* NUMBER: 2
|
||||
* DESCRIPTION: val/var reassignment and/or uninitialized variable usages based on nested CallsInPlace effects with wrong invocation kind
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1() {
|
||||
val value_1: Int
|
||||
funWithAtLeastOnceCallsInPlace {
|
||||
@@ -28,6 +28,7 @@ fun case_1() {
|
||||
value_1.inc()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2() {
|
||||
val value_1: Int
|
||||
funWithAtMostOnceCallsInPlace {
|
||||
@@ -45,6 +46,7 @@ fun case_2() {
|
||||
value_1.inc()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case_3() {
|
||||
var value_1: Int
|
||||
funWithAtLeastOnceCallsInPlace {
|
||||
@@ -62,6 +64,7 @@ fun case_3() {
|
||||
value_1.inc()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 4
|
||||
fun case_4() {
|
||||
var value_1: Int
|
||||
funWithAtLeastOnceCallsInPlace {
|
||||
|
||||
+17
-22
@@ -4,14 +4,14 @@
|
||||
// SKIP_TXT
|
||||
|
||||
/*
|
||||
KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
|
||||
|
||||
SECTION: contracts
|
||||
CATEGORIES: analysis, controlFlow, initialization
|
||||
NUMBER: 3
|
||||
DESCRIPTION: val/var reassignment and/or uninitialized variable usages with compelx control flow inside/outside lambda of contract function with CallsInPlace effect
|
||||
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
|
||||
*
|
||||
* SECTIONS: contracts, analysis, controlFlow, initialization
|
||||
* NUMBER: 3
|
||||
* DESCRIPTION: val/var reassignment and/or uninitialized variable usages with compelx control flow inside/outside lambda of contract function with CallsInPlace effect
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(value_1: _EnumClass?) {
|
||||
val value_2: Int
|
||||
|
||||
@@ -25,6 +25,7 @@ fun case_1(value_1: _EnumClass?) {
|
||||
<!UNINITIALIZED_VARIABLE!>value_2<!>.inc()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: Any?) {
|
||||
val value_2: Int
|
||||
|
||||
@@ -41,6 +42,7 @@ fun case_2(value_1: Any?) {
|
||||
value_2.dec()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
class case_3(value_1: Any?) {
|
||||
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>var value_2: Int<!>
|
||||
|
||||
@@ -59,6 +61,7 @@ class case_3(value_1: Any?) {
|
||||
}
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 4
|
||||
fun case_4(value_1: _EnumClassSingle?) {
|
||||
var value_2: Int
|
||||
|
||||
@@ -77,6 +80,7 @@ fun case_4(value_1: _EnumClassSingle?) {
|
||||
value_2.minus(5)
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 5
|
||||
fun case_5() {
|
||||
var value_2: Int
|
||||
|
||||
@@ -89,6 +93,7 @@ fun case_5() {
|
||||
<!UNINITIALIZED_VARIABLE!>value_2<!>++
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 6
|
||||
fun case_6() {
|
||||
var value_2: Int
|
||||
|
||||
@@ -103,6 +108,7 @@ fun case_6() {
|
||||
value_2++
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 7
|
||||
fun case_7() {
|
||||
var value_1: Int
|
||||
|
||||
@@ -119,21 +125,8 @@ fun case_7() {
|
||||
println(<!UNINITIALIZED_VARIABLE!>value_1<!>.inc())
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 8
|
||||
fun case_8() {
|
||||
val x: Int
|
||||
funWithExactlyOnceCallsInPlace outer@ {
|
||||
funWithAtMostOnceCallsInPlace {
|
||||
funWithExactlyOnceCallsInPlace {
|
||||
x = 42
|
||||
return@outer
|
||||
}
|
||||
}
|
||||
throw Exception()
|
||||
}
|
||||
println(x.inc())
|
||||
}
|
||||
|
||||
fun case_9() {
|
||||
val x: Int
|
||||
funWithExactlyOnceCallsInPlace outer@ {
|
||||
funWithAtMostOnceCallsInPlace {
|
||||
@@ -147,7 +140,8 @@ fun case_9() {
|
||||
println(<!UNINITIALIZED_VARIABLE!>x<!>.inc())
|
||||
}
|
||||
|
||||
fun case_10() {
|
||||
// TESTCASE NUMBER: 9
|
||||
fun case_9() {
|
||||
val x: Int
|
||||
funWithExactlyOnceCallsInPlace outer@ {
|
||||
funWithAtMostOnceCallsInPlace {
|
||||
@@ -158,7 +152,8 @@ fun case_10() {
|
||||
println(<!UNINITIALIZED_VARIABLE!>x<!>.inc())
|
||||
}
|
||||
|
||||
fun case_11() {
|
||||
// TESTCASE NUMBER: 10
|
||||
fun case_10() {
|
||||
var x: Int
|
||||
funWithAtLeastOnceCallsInPlace outer@ {
|
||||
funWithAtMostOnceCallsInPlace {
|
||||
|
||||
+12
-8
@@ -3,14 +3,14 @@
|
||||
// SKIP_TXT
|
||||
|
||||
/*
|
||||
KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
|
||||
|
||||
SECTION: contracts
|
||||
CATEGORIES: analysis, controlFlow, initialization
|
||||
NUMBER: 4
|
||||
DESCRIPTION: CallsInPlace contract functions with name shadowing and wrong invocation kind
|
||||
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
|
||||
*
|
||||
* SECTIONS: contracts, analysis, controlFlow, initialization
|
||||
* NUMBER: 4
|
||||
* DESCRIPTION: CallsInPlace contract functions with name shadowing and wrong invocation kind
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1() {
|
||||
val value_1: Int
|
||||
funWithExactlyOnceCallsInPlace {
|
||||
@@ -20,6 +20,7 @@ fun case_1() {
|
||||
<!UNINITIALIZED_VARIABLE!>value_1<!>.inc()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2() {
|
||||
val value_1: Int
|
||||
funWithExactlyOnceCallsInPlace {
|
||||
@@ -35,6 +36,7 @@ fun case_2() {
|
||||
<!UNINITIALIZED_VARIABLE!>value_1<!>.inc()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case_3() {
|
||||
val value_1: Int
|
||||
funWithAtLeastOnceCallsInPlace {
|
||||
@@ -53,7 +55,8 @@ fun case_3() {
|
||||
<!UNINITIALIZED_VARIABLE!>value_1<!>.inc()
|
||||
}
|
||||
|
||||
fun case_6() {
|
||||
// TESTCASE NUMBER: 4
|
||||
fun case_4() {
|
||||
var value_1: Int
|
||||
funWithAtLeastOnceCallsInPlace {
|
||||
val <!NAME_SHADOWING!>value_1<!>: Int
|
||||
@@ -71,7 +74,8 @@ fun case_6() {
|
||||
<!UNINITIALIZED_VARIABLE!>value_1<!>.dec()
|
||||
}
|
||||
|
||||
fun case_7() {
|
||||
// TESTCASE NUMBER: 5
|
||||
fun case_5() {
|
||||
val value_1: Int
|
||||
funWithUnknownCallsInPlace {
|
||||
var <!NAME_SHADOWING!>value_1<!>: Int
|
||||
|
||||
+10
-6
@@ -3,20 +3,21 @@
|
||||
// SKIP_TXT
|
||||
|
||||
/*
|
||||
KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
|
||||
|
||||
SECTION: contracts
|
||||
CATEGORIES: analysis, controlFlow, initialization
|
||||
NUMBER: 5
|
||||
DESCRIPTION: CallsInPlace contract functions with invalid lambda passing to function parameter.
|
||||
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
|
||||
*
|
||||
* SECTIONS: contracts, analysis, controlFlow, initialization
|
||||
* NUMBER: 5
|
||||
* DESCRIPTION: CallsInPlace contract functions with invalid lambda passing to function parameter.
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1() {
|
||||
val value_1: Int
|
||||
funWithExactlyOnceCallsInPlace({ <!CAPTURED_VAL_INITIALIZATION!>value_1<!> = 10 })
|
||||
<!UNINITIALIZED_VARIABLE!>value_1<!>.inc()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2() {
|
||||
var value_1: Int
|
||||
val l = { value_1 = 10 }
|
||||
@@ -24,6 +25,7 @@ fun case_2() {
|
||||
<!UNINITIALIZED_VARIABLE!>value_1<!>.inc()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case_3() {
|
||||
var value_1: Int
|
||||
val l = fun () { value_1 = 10 }
|
||||
@@ -31,12 +33,14 @@ fun case_3() {
|
||||
<!UNINITIALIZED_VARIABLE!>value_1<!>.inc()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 4
|
||||
fun case_4() {
|
||||
var value_1: Int
|
||||
funWithAtLeastOnceCallsInPlace(fun () { value_1 = 10 })
|
||||
<!UNINITIALIZED_VARIABLE!>value_1<!>.inc()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 5
|
||||
fun case_5() {
|
||||
val value_1: Int
|
||||
val o = object {
|
||||
|
||||
+9
-8
@@ -3,22 +3,23 @@
|
||||
// SKIP_TXT
|
||||
|
||||
/*
|
||||
KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
|
||||
|
||||
SECTION: contracts
|
||||
CATEGORIES: analysis, controlFlow, initialization
|
||||
NUMBER: 6
|
||||
DESCRIPTION: Check the lack of CallsInPlace effect on the lambda in the parentheses.
|
||||
UNEXPECTED BEHAVIOUR
|
||||
ISSUES: KT-26229
|
||||
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
|
||||
*
|
||||
* SECTIONS: contracts, analysis, controlFlow, initialization
|
||||
* NUMBER: 6
|
||||
* DESCRIPTION: Check the lack of CallsInPlace effect on the lambda in the parentheses.
|
||||
* UNEXPECTED BEHAVIOUR
|
||||
* ISSUES: KT-26229
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1() {
|
||||
val value_1: Int
|
||||
funWithExactlyOnceCallsInPlace({ <!CAPTURED_VAL_INITIALIZATION!>value_1<!> = 11 })
|
||||
<!UNINITIALIZED_VARIABLE!>value_1<!>.inc()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2() {
|
||||
var value_1: Int
|
||||
funWithAtLeastOnceCallsInPlace({ value_1 = 11 })
|
||||
|
||||
+8
-6
@@ -3,20 +3,21 @@
|
||||
// SKIP_TXT
|
||||
|
||||
/*
|
||||
KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
|
||||
SECTION: contracts
|
||||
CATEGORIES: analysis, controlFlow, initialization
|
||||
NUMBER: 1
|
||||
DESCRIPTION: val/var assignments using contract functions with CallsInPlace effect
|
||||
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
*
|
||||
* SECTIONS: contracts, analysis, controlFlow, initialization
|
||||
* NUMBER: 1
|
||||
* DESCRIPTION: val/var assignments using contract functions with CallsInPlace effect
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1() {
|
||||
val value_1: Int
|
||||
funWithExactlyOnceCallsInPlace { value_1 = 10 }
|
||||
value_1.inc()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2() {
|
||||
var value_1: Int
|
||||
var value_2: Int
|
||||
@@ -26,6 +27,7 @@ fun case_2() {
|
||||
value_2.div(10)
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
class case_3 {
|
||||
val value_1: Int
|
||||
var value_2: Int
|
||||
|
||||
+15
-9
@@ -3,14 +3,14 @@
|
||||
// SKIP_TXT
|
||||
|
||||
/*
|
||||
KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
|
||||
SECTION: contracts
|
||||
CATEGORIES: analysis, controlFlow, initialization
|
||||
NUMBER: 2
|
||||
DESCRIPTION: Nested val/var assignments using contract functions with CallsInPlace effect
|
||||
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
*
|
||||
* SECTIONS: contracts, analysis, controlFlow, initialization
|
||||
* NUMBER: 2
|
||||
* DESCRIPTION: Nested val/var assignments using contract functions with CallsInPlace effect
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1() {
|
||||
val value_1: Int
|
||||
funWithExactlyOnceCallsInPlace {
|
||||
@@ -28,6 +28,7 @@ fun case_1() {
|
||||
value_1.inc()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2() {
|
||||
val value_1: Int
|
||||
funWithAtMostOnceCallsInPlace {
|
||||
@@ -44,6 +45,7 @@ fun case_2() {
|
||||
}
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case_3() {
|
||||
var value_1: Int
|
||||
funWithExactlyOnceCallsInPlace {
|
||||
@@ -61,6 +63,7 @@ fun case_3() {
|
||||
value_1.inc()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 4
|
||||
fun case_4() {
|
||||
var value_1: Int
|
||||
funWithAtMostOnceCallsInPlace {
|
||||
@@ -80,7 +83,8 @@ fun case_4() {
|
||||
}
|
||||
}
|
||||
|
||||
fun case_7() {
|
||||
// TESTCASE NUMBER: 5
|
||||
fun case_5() {
|
||||
var value_1: Int
|
||||
funWithAtLeastOnceCallsInPlace {
|
||||
funWithAtLeastOnceCallsInPlace {
|
||||
@@ -97,7 +101,8 @@ fun case_7() {
|
||||
value_1.inc()
|
||||
}
|
||||
|
||||
fun case_8() {
|
||||
// TESTCASE NUMBER: 6
|
||||
fun case_6() {
|
||||
var value_1: Int
|
||||
funWithUnknownCallsInPlace {
|
||||
funWithAtMostOnceCallsInPlace {
|
||||
@@ -120,7 +125,8 @@ fun case_8() {
|
||||
}
|
||||
}
|
||||
|
||||
fun case_9() {
|
||||
// TESTCASE NUMBER: 7
|
||||
fun case_7() {
|
||||
var value_1: Int
|
||||
funWithAtMostOnceCallsInPlace {
|
||||
funWithUnknownCallsInPlace {
|
||||
|
||||
+16
-6
@@ -4,14 +4,14 @@
|
||||
// SKIP_TXT
|
||||
|
||||
/*
|
||||
KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
|
||||
SECTION: contracts
|
||||
CATEGORIES: analysis, controlFlow, initialization
|
||||
NUMBER: 3
|
||||
DESCRIPTION: val/var assignments or subsequent usages with compelx control flow inside/outside lambda of contract function with CallsInPlace effect
|
||||
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
*
|
||||
* SECTIONS: contracts, analysis, controlFlow, initialization
|
||||
* NUMBER: 3
|
||||
* DESCRIPTION: val/var assignments or subsequent usages with compelx control flow inside/outside lambda of contract function with CallsInPlace effect
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(value_1: _EnumClass?) {
|
||||
val value_2: Int
|
||||
|
||||
@@ -26,6 +26,7 @@ fun case_1(value_1: _EnumClass?) {
|
||||
value_2.inc()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: Any?) {
|
||||
val value_2: Int
|
||||
|
||||
@@ -42,6 +43,7 @@ fun case_2(value_1: Any?) {
|
||||
}
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
class case_3(value_1: Any?) {
|
||||
var value_2: Int
|
||||
|
||||
@@ -60,6 +62,7 @@ class case_3(value_1: Any?) {
|
||||
}
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 4
|
||||
fun case_4(value_1: _EnumClassSingle?) {
|
||||
var value_2: Int
|
||||
|
||||
@@ -78,6 +81,7 @@ fun case_4(value_1: _EnumClassSingle?) {
|
||||
}
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 5
|
||||
fun case_5() {
|
||||
var value_2: Int
|
||||
|
||||
@@ -90,6 +94,7 @@ fun case_5() {
|
||||
value_2++
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 6
|
||||
fun case_6() {
|
||||
var value_2: Int
|
||||
|
||||
@@ -104,6 +109,7 @@ fun case_6() {
|
||||
value_2++
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 7
|
||||
fun case_7() {
|
||||
var value_1: Int
|
||||
|
||||
@@ -122,6 +128,7 @@ fun case_7() {
|
||||
println(value_1.inc())
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 8
|
||||
fun case_8() {
|
||||
var value_1: Int
|
||||
|
||||
@@ -138,6 +145,7 @@ fun case_8() {
|
||||
println(value_1.inc())
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 9
|
||||
fun case_9() {
|
||||
val x: Int
|
||||
funWithExactlyOnceCallsInPlace outer@ {
|
||||
@@ -152,6 +160,7 @@ fun case_9() {
|
||||
println(x.inc())
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 10
|
||||
fun case_10() {
|
||||
val x: Int
|
||||
funWithExactlyOnceCallsInPlace outer@ {
|
||||
@@ -163,6 +172,7 @@ fun case_10() {
|
||||
println(x.inc())
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 11
|
||||
fun case_11() {
|
||||
var x: Int
|
||||
funWithAtLeastOnceCallsInPlace outer@ {
|
||||
|
||||
+13
-6
@@ -3,14 +3,14 @@
|
||||
// SKIP_TXT
|
||||
|
||||
/*
|
||||
KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
|
||||
SECTION: contracts
|
||||
CATEGORIES: analysis, controlFlow, initialization
|
||||
NUMBER: 4
|
||||
DESCRIPTION: CallsInPlace contract functions with name shadowing
|
||||
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
*
|
||||
* SECTIONS: contracts, analysis, controlFlow, initialization
|
||||
* NUMBER: 4
|
||||
* DESCRIPTION: CallsInPlace contract functions with name shadowing
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1() {
|
||||
val <!UNUSED_VARIABLE!>value_1<!>: Int
|
||||
funWithExactlyOnceCallsInPlace {
|
||||
@@ -19,6 +19,7 @@ fun case_1() {
|
||||
}
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2() {
|
||||
val <!UNUSED_VARIABLE!>value_1<!>: Int
|
||||
funWithExactlyOnceCallsInPlace {
|
||||
@@ -33,6 +34,7 @@ fun case_2() {
|
||||
}
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case_3() {
|
||||
val value_1: Int
|
||||
funWithAtLeastOnceCallsInPlace {
|
||||
@@ -51,6 +53,7 @@ fun case_3() {
|
||||
value_1.inc()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 4
|
||||
fun case_4() {
|
||||
val value_1: Int
|
||||
funWithAtMostOnceCallsInPlace {
|
||||
@@ -69,6 +72,7 @@ fun case_4() {
|
||||
value_1.inc()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 5
|
||||
fun case_5() {
|
||||
val value_1: Int
|
||||
funWithUnknownCallsInPlace {
|
||||
@@ -86,6 +90,7 @@ fun case_5() {
|
||||
value_1.inc()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 6
|
||||
fun case_6() {
|
||||
var value_1: Int
|
||||
funWithAtLeastOnceCallsInPlace {
|
||||
@@ -102,6 +107,7 @@ fun case_6() {
|
||||
value_1.dec()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 7
|
||||
fun case_7() {
|
||||
val value_1: Int
|
||||
funWithAtLeastOnceCallsInPlace {
|
||||
@@ -114,6 +120,7 @@ fun case_7() {
|
||||
value_1.dec()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 8
|
||||
fun case_8() {
|
||||
var value_1: Int
|
||||
funWithAtLeastOnceCallsInPlace {
|
||||
|
||||
+9
-8
@@ -1,13 +1,12 @@
|
||||
// !USE_EXPERIMENTAL: kotlin.contracts.ExperimentalContracts
|
||||
|
||||
/*
|
||||
KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
|
||||
SECTION: contracts
|
||||
CATEGORIES: analysis, controlFlow, initialization
|
||||
NUMBER: 5
|
||||
DESCRIPTION: Smart initialization with correspond contract function with default value before lambda.
|
||||
ISSUES: KT-26444
|
||||
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
*
|
||||
* SECTIONS: contracts, analysis, controlFlow, initialization
|
||||
* NUMBER: 5
|
||||
* DESCRIPTION: Smart initialization with correspond contract function with default value before lambda.
|
||||
* ISSUES: KT-26444
|
||||
*/
|
||||
|
||||
// FILE: contracts.kt
|
||||
@@ -16,15 +15,17 @@ package contracts
|
||||
|
||||
import kotlin.contracts.*
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(x: Double = 1.0, block: () -> Unit): Double {
|
||||
contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) }
|
||||
return x
|
||||
}
|
||||
|
||||
// FILE: usages.kt
|
||||
// FILE: main.kt
|
||||
|
||||
import contracts.*
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1() {
|
||||
val value_1: Int
|
||||
contracts.case_1 { value_1 = 10 }
|
||||
|
||||
+12
-9
@@ -2,14 +2,13 @@
|
||||
// !WITH_CONTRACT_FUNCTIONS
|
||||
|
||||
/*
|
||||
KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
|
||||
SECTION: contracts
|
||||
CATEGORIES: analysis, controlFlow, initialization
|
||||
NUMBER: 6
|
||||
DESCRIPTION: Check the lack of CallsInPlace effect on the lambda in the parentheses.
|
||||
UNEXPECTED BEHAVIOUR
|
||||
ISSUES: KT-26229
|
||||
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
*
|
||||
* SECTIONS: contracts, analysis, controlFlow, initialization
|
||||
* NUMBER: 6
|
||||
* DESCRIPTION: Check the lack of CallsInPlace effect on the lambda in the parentheses.
|
||||
* UNEXPECTED BEHAVIOUR
|
||||
* ISSUES: KT-26229
|
||||
*/
|
||||
|
||||
// FILE: contracts.kt
|
||||
@@ -18,6 +17,7 @@ package contracts
|
||||
|
||||
import kotlin.contracts.*
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
inline fun case_3(block1: () -> Unit, block2: () -> Unit, block3: () -> Unit) {
|
||||
contract {
|
||||
callsInPlace(block1, InvocationKind.EXACTLY_ONCE)
|
||||
@@ -30,22 +30,25 @@ inline fun case_3(block1: () -> Unit, block2: () -> Unit, block3: () -> Unit) {
|
||||
block3()
|
||||
}
|
||||
|
||||
// FILE: usages.kt
|
||||
// FILE: main.kt
|
||||
|
||||
import contracts.*
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1() {
|
||||
val value_1: Int
|
||||
funWithExactlyOnceCallsInPlace({ <!CAPTURED_VAL_INITIALIZATION!>value_1<!> = 11 })
|
||||
<!UNINITIALIZED_VARIABLE!>value_1<!>.inc()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2() {
|
||||
var value_1: Int
|
||||
funWithAtLeastOnceCallsInPlace({ value_1 = 11 })
|
||||
<!UNINITIALIZED_VARIABLE!>value_1<!>.inc()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case_3() {
|
||||
val value_1: Int
|
||||
var value_2: Int
|
||||
|
||||
+10
-7
@@ -1,12 +1,11 @@
|
||||
// !USE_EXPERIMENTAL: kotlin.contracts.ExperimentalContracts
|
||||
|
||||
/*
|
||||
KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
|
||||
SECTION: contracts
|
||||
CATEGORIES: analysis, controlFlow, initialization
|
||||
NUMBER: 7
|
||||
DESCRIPTION: Check initialization when type parameter of the callsInPlace is specify explicitly.
|
||||
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
*
|
||||
* SECTIONS: contracts, analysis, controlFlow, initialization
|
||||
* NUMBER: 7
|
||||
* DESCRIPTION: Check initialization when type parameter of the callsInPlace is specify explicitly.
|
||||
*/
|
||||
|
||||
// FILE: contracts.kt
|
||||
@@ -15,6 +14,7 @@ package contracts
|
||||
|
||||
import kotlin.contracts.*
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
inline fun <T> case_1(block: () -> T): T {
|
||||
contract {
|
||||
callsInPlace<T>(block, InvocationKind.EXACTLY_ONCE)
|
||||
@@ -22,6 +22,7 @@ inline fun <T> case_1(block: () -> T): T {
|
||||
return block()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
inline fun case_2(block: () -> Int): Int {
|
||||
contract {
|
||||
callsInPlace<Number>(block, InvocationKind.EXACTLY_ONCE)
|
||||
@@ -29,10 +30,11 @@ inline fun case_2(block: () -> Int): Int {
|
||||
return block()
|
||||
}
|
||||
|
||||
// FILE: usages.kt
|
||||
// FILE: main.kt
|
||||
|
||||
import contracts.*
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1() {
|
||||
val value_1: Int
|
||||
case_1 {
|
||||
@@ -41,6 +43,7 @@ fun case_1() {
|
||||
println(value_1)
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2() {
|
||||
val value_1: Int
|
||||
case_2 {
|
||||
|
||||
+7
-6
@@ -3,14 +3,14 @@
|
||||
// SKIP_TXT
|
||||
|
||||
/*
|
||||
KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
|
||||
|
||||
SECTION: contracts
|
||||
CATEGORIES: analysis, controlFlow, unreachableCode
|
||||
NUMBER: 1
|
||||
DESCRIPTION: Using not allowed break and continue inside lambda of contract function
|
||||
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
|
||||
*
|
||||
* SECTIONS: contracts, analysis, controlFlow, unreachableCode
|
||||
* NUMBER: 1
|
||||
* DESCRIPTION: Using not allowed break and continue inside lambda of contract function
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(value_1: Boolean) {
|
||||
while (value_1) {
|
||||
funWithExactlyOnceCallsInPlace {
|
||||
@@ -27,6 +27,7 @@ fun case_1(value_1: Boolean) {
|
||||
}
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: Boolean) {
|
||||
for (i in 0..10) {
|
||||
funWithExactlyOnceCallsInPlace {
|
||||
|
||||
+13
-6
@@ -4,14 +4,14 @@
|
||||
// SKIP_TXT
|
||||
|
||||
/*
|
||||
KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
|
||||
SECTION: contracts
|
||||
CATEGORIES: analysis, controlFlow, unreachableCode
|
||||
NUMBER: 1
|
||||
DESCRIPTION: Unreachable code detection using contract function with CallsInPlace effect
|
||||
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
*
|
||||
* SECTIONS: contracts, analysis, controlFlow, unreachableCode
|
||||
* NUMBER: 1
|
||||
* DESCRIPTION: Unreachable code detection using contract function with CallsInPlace effect
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1() {
|
||||
funWithExactlyOnceCallsInPlace {
|
||||
throw Exception()
|
||||
@@ -19,6 +19,7 @@ fun case_1() {
|
||||
<!UNREACHABLE_CODE!>println("1")<!>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2() {
|
||||
funWithAtLeastOnceCallsInPlace {
|
||||
throw Exception()
|
||||
@@ -26,6 +27,7 @@ fun case_2() {
|
||||
<!UNREACHABLE_CODE!>println("1")<!>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case_3() {
|
||||
funWithExactlyOnceCallsInPlace {
|
||||
return
|
||||
@@ -33,6 +35,7 @@ fun case_3() {
|
||||
<!UNREACHABLE_CODE!>println("1")<!>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 4
|
||||
fun case_4() {
|
||||
funWithAtLeastOnceCallsInPlace {
|
||||
return
|
||||
@@ -40,6 +43,7 @@ fun case_4() {
|
||||
<!UNREACHABLE_CODE!>println("1")<!>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 5
|
||||
fun case_5(args: Array<String>) {
|
||||
fun nestedFun_1() {
|
||||
funWithAtLeastOnceCallsInPlace {
|
||||
@@ -66,6 +70,7 @@ fun case_5(args: Array<String>) {
|
||||
}
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 6
|
||||
fun case_6(args: Array<String>) {
|
||||
args.forEach {
|
||||
funWithExactlyOnceCallsInPlace {
|
||||
@@ -91,6 +96,7 @@ fun case_6(args: Array<String>) {
|
||||
}
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 7
|
||||
fun case_7() {
|
||||
<!UNREACHABLE_CODE!>val value_1 =<!> funWithExactlyOnceCallsInPlace {
|
||||
throw Exception()
|
||||
@@ -100,6 +106,7 @@ fun case_7() {
|
||||
}
|
||||
|
||||
|
||||
// TESTCASE NUMBER: 8
|
||||
fun case_8() {
|
||||
<!UNREACHABLE_CODE!>println(<!>funWithExactlyOnceCallsInPlace { return; <!UNREACHABLE_CODE!>println(1)<!> }<!UNREACHABLE_CODE!>)<!>
|
||||
<!UNREACHABLE_CODE!>return<!>
|
||||
|
||||
+9
-6
@@ -3,14 +3,14 @@
|
||||
// SKIP_TXT
|
||||
|
||||
/*
|
||||
KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
|
||||
SECTION: contracts
|
||||
CATEGORIES: analysis, controlFlow, unreachableCode
|
||||
NUMBER: 2
|
||||
DESCRIPTION: Check for lack of unreachable code report when 'at most once' and 'unknown' invokations in CallsInPlace effect used.
|
||||
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
*
|
||||
* SECTIONS: contracts, analysis, controlFlow, unreachableCode
|
||||
* NUMBER: 2
|
||||
* DESCRIPTION: Check for lack of unreachable code report when 'at most once' and 'unknown' invokations in CallsInPlace effect used.
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1() {
|
||||
funWithAtMostOnceCallsInPlace {
|
||||
throw Exception()
|
||||
@@ -21,6 +21,7 @@ fun case_1() {
|
||||
println("1")
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2() {
|
||||
funWithUnknownCallsInPlace {
|
||||
throw Exception()
|
||||
@@ -31,6 +32,7 @@ fun case_2() {
|
||||
println("1")
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case_3() {
|
||||
funWithExactlyOnceCallsInPlace {
|
||||
return@funWithExactlyOnceCallsInPlace
|
||||
@@ -53,6 +55,7 @@ fun case_3() {
|
||||
println("1")
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 4
|
||||
fun case_4() {
|
||||
funWithAtLeastOnceCallsInPlace {
|
||||
return@funWithAtLeastOnceCallsInPlace
|
||||
|
||||
+11
-6
@@ -3,14 +3,14 @@
|
||||
// SKIP_TXT
|
||||
|
||||
/*
|
||||
KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
|
||||
SECTION: contracts
|
||||
CATEGORIES: analysis, controlFlow, unreachableCode
|
||||
NUMBER: 3
|
||||
DESCRIPTION: Unreachable code detection using local functions or labdas combined with contract functions with CallsInPlace effect
|
||||
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
*
|
||||
* SECTIONS: contracts, analysis, controlFlow, unreachableCode
|
||||
* NUMBER: 3
|
||||
* DESCRIPTION: Unreachable code detection using local functions or labdas combined with contract functions with CallsInPlace effect
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1() {
|
||||
funWithExactlyOnceCallsInPlace {
|
||||
throw Exception()
|
||||
@@ -18,6 +18,7 @@ fun case_1() {
|
||||
<!UNREACHABLE_CODE!>println("1")<!>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2() {
|
||||
funWithAtLeastOnceCallsInPlace {
|
||||
throw Exception()
|
||||
@@ -25,6 +26,7 @@ fun case_2() {
|
||||
<!UNREACHABLE_CODE!>println("1")<!>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case_3() {
|
||||
funWithExactlyOnceCallsInPlace {
|
||||
return
|
||||
@@ -32,6 +34,7 @@ fun case_3() {
|
||||
<!UNREACHABLE_CODE!>println("1")<!>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 4
|
||||
fun case_4() {
|
||||
funWithAtLeastOnceCallsInPlace {
|
||||
return
|
||||
@@ -39,6 +42,7 @@ fun case_4() {
|
||||
<!UNREACHABLE_CODE!>println("1")<!>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 5
|
||||
fun case_5(args: Array<String>) {
|
||||
fun nestedFun_1() {
|
||||
funWithAtLeastOnceCallsInPlace {
|
||||
@@ -65,6 +69,7 @@ fun case_5(args: Array<String>) {
|
||||
}
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 6
|
||||
fun case_6(args: Array<String>) {
|
||||
args.forEach {
|
||||
funWithExactlyOnceCallsInPlace {
|
||||
|
||||
+8
-6
@@ -3,14 +3,14 @@
|
||||
// SKIP_TXT
|
||||
|
||||
/*
|
||||
KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
|
||||
SECTION: contracts
|
||||
CATEGORIES: analysis, controlFlow, unreachableCode
|
||||
NUMBER: 4
|
||||
DESCRIPTION: Unreachable code detection using nested contract functions with CallsInPlace effect
|
||||
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
*
|
||||
* SECTIONS: contracts, analysis, controlFlow, unreachableCode
|
||||
* NUMBER: 4
|
||||
* DESCRIPTION: Unreachable code detection using nested contract functions with CallsInPlace effect
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1() {
|
||||
funWithExactlyOnceCallsInPlace {
|
||||
funWithExactlyOnceCallsInPlace {
|
||||
@@ -24,6 +24,7 @@ fun case_1() {
|
||||
<!UNREACHABLE_CODE!>println("3")<!>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2() {
|
||||
funWithAtLeastOnceCallsInPlace {
|
||||
funWithAtLeastOnceCallsInPlace label_1@ {
|
||||
@@ -40,6 +41,7 @@ fun case_2() {
|
||||
<!UNREACHABLE_CODE!>println("3")<!>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case_3() {
|
||||
funWithExactlyOnceCallsInPlace {
|
||||
funWithExactlyOnceCallsInPlace {
|
||||
|
||||
+7
-6
@@ -3,14 +3,14 @@
|
||||
// SKIP_TXT
|
||||
|
||||
/*
|
||||
KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
|
||||
SECTION: contracts
|
||||
CATEGORIES: analysis, controlFlow, unreachableCode
|
||||
NUMBER: 5
|
||||
DESCRIPTION: Unreachable code detection using contract functions with complex control flow inside
|
||||
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
*
|
||||
* SECTIONS: contracts, analysis, controlFlow, unreachableCode
|
||||
* NUMBER: 5
|
||||
* DESCRIPTION: Unreachable code detection using contract functions with complex control flow inside
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(b: Boolean?) {
|
||||
funWithExactlyOnceCallsInPlace {
|
||||
if (b == null) return
|
||||
@@ -30,6 +30,7 @@ fun case_1(b: Boolean?) {
|
||||
<!UNREACHABLE_CODE!>println(3)<!>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(b: Boolean?, c: Boolean) {
|
||||
funWithAtLeastOnceCallsInPlace {
|
||||
when (b) {
|
||||
|
||||
+7
-6
@@ -3,14 +3,14 @@
|
||||
// SKIP_TXT
|
||||
|
||||
/*
|
||||
KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
|
||||
SECTION: contracts
|
||||
CATEGORIES: analysis, controlFlow, unreachableCode
|
||||
NUMBER: 6
|
||||
DESCRIPTION: Check for lack of unreachable code report when in complex control flow of contract function lambda not all branches are doing non-local return
|
||||
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
*
|
||||
* SECTIONS: contracts, analysis, controlFlow, unreachableCode
|
||||
* NUMBER: 6
|
||||
* DESCRIPTION: Check for lack of unreachable code report when in complex control flow of contract function lambda not all branches are doing non-local return
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(b: Boolean?, c: Boolean) {
|
||||
funWithExactlyOnceCallsInPlace {
|
||||
if (b == null) return
|
||||
@@ -38,6 +38,7 @@ fun case_1(b: Boolean?, c: Boolean) {
|
||||
println(3)
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(b: Boolean?, c: Boolean) {
|
||||
funWithAtLeastOnceCallsInPlace {
|
||||
when (b) {
|
||||
|
||||
+9
-8
@@ -1,13 +1,12 @@
|
||||
// !USE_EXPERIMENTAL: kotlin.contracts.ExperimentalContracts
|
||||
|
||||
/*
|
||||
KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
|
||||
SECTION: contracts
|
||||
CATEGORIES: analysis, controlFlow, unreachableCode
|
||||
NUMBER: 7
|
||||
DESCRIPTION: Smart initialization with correspond contract function with default value before lambda.
|
||||
ISSUES: KT-26444
|
||||
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
*
|
||||
* SECTIONS: contracts, analysis, controlFlow, unreachableCode
|
||||
* NUMBER: 7
|
||||
* DESCRIPTION: Smart initialization with correspond contract function with default value before lambda.
|
||||
* ISSUES: KT-26444
|
||||
*/
|
||||
|
||||
// FILE: contracts.kt
|
||||
@@ -16,15 +15,17 @@ package contracts
|
||||
|
||||
import kotlin.contracts.*
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(x: Double = 1.0, block: () -> Unit): Double {
|
||||
contract { callsInPlace(block, InvocationKind.AT_LEAST_ONCE) }
|
||||
return x
|
||||
}
|
||||
|
||||
// FILE: usages.kt
|
||||
// FILE: main.kt
|
||||
|
||||
import contracts.*
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1() {
|
||||
contracts.case_1 { throw Exception() }
|
||||
<!UNREACHABLE_CODE!>println(1)<!>
|
||||
|
||||
Reference in New Issue
Block a user