[FIR] Fix TEST SPEC tests

Ensure the test data contents for both the frontends
are identical. This is needed for proper analysis of
K2-differences.
This commit is contained in:
Nikolay Lunyak
2023-06-12 15:20:46 +03:00
committed by Space Team
parent e6633d3d92
commit 7541732752
583 changed files with 4053 additions and 5418 deletions
@@ -1,75 +0,0 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
// SKIP_TXT
// 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
funWithAtMostOnceCallsInPlace { value_1 = 10 }
funWithUnknownCallsInPlace { value_2 = 10 }
<!UNINITIALIZED_VARIABLE!>value_1<!>.dec()
<!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<!>
val value_3: Int
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>var value_4: Int<!>
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>var value_5: Int<!>
init {
funWithAtMostOnceCallsInPlace { value_1 = 1 }
funWithUnknownCallsInPlace { <!VAL_REASSIGNMENT!>value_2<!> = 1 }
funWithAtLeastOnceCallsInPlace { <!VAL_REASSIGNMENT!>value_3<!> = 1 }
funWithAtMostOnceCallsInPlace { value_4 = 2 }
funWithUnknownCallsInPlace { value_5 = 3 }
}
}
// TESTCASE NUMBER: 6
fun case_6() {
val value_1: Int
for (i in 0..1)
funWithExactlyOnceCallsInPlace { <!VAL_REASSIGNMENT!>value_1<!> = 10 }
<!UNINITIALIZED_VARIABLE!>value_1<!>.dec()
}
// TESTCASE NUMBER: 7
fun case_7() {
var value_1: Int
var i = 0
while (i < 10) {
funWithExactlyOnceCallsInPlace { value_1 = 10 }
i++
}
<!UNINITIALIZED_VARIABLE!>value_1<!>.dec()
}
// TESTCASE NUMBER: 8
fun case_8() {
var value_1: Int
if (true) funWithAtLeastOnceCallsInPlace { value_1 = 10 }
<!UNINITIALIZED_VARIABLE!>value_1<!>.dec()
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !OPT_IN: kotlin.contracts.ExperimentalContracts
// SKIP_TXT
@@ -1,6 +1,15 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
// SKIP_TXT
/*
* 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
* HELPERS: contractFunctions
*/
// TESTCASE NUMBER: 1
fun case_1() {
val value_1: Int
@@ -1,15 +1,26 @@
// LANGUAGE: +WarnAboutNonExhaustiveWhenOnAlgebraicTypes
// !OPT_IN: kotlin.contracts.ExperimentalContracts
// SKIP_TXT
/*
* 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
* HELPERS: enumClasses, contractFunctions
*/
// TESTCASE NUMBER: 1
fun case_1(value_1: EnumClass?) {
val value_2: Int
<!NO_ELSE_IN_WHEN!>when<!> (value_1) {
when (value_1) {
EnumClass.NORTH -> funWithExactlyOnceCallsInPlace { value_2 = 1 }
EnumClass.SOUTH -> funWithExactlyOnceCallsInPlace { value_2 = 2 }
EnumClass.EAST -> funWithExactlyOnceCallsInPlace { value_2 = 4 }
null -> funWithExactlyOnceCallsInPlace { value_2 = 5 }
else -> {}
}
<!UNINITIALIZED_VARIABLE!>value_2<!>.inc()
@@ -1,6 +1,15 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
// SKIP_TXT
/*
* 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
* HELPERS: contractFunctions
*/
// TESTCASE NUMBER: 1
fun case_1() {
val value_1: Int
@@ -1,38 +1,40 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
// SKIP_TXT
/*
* 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.
* HELPERS: contractFunctions
*/
// TESTCASE NUMBER: 1
fun case_1() {
val value_1: Int
funWithExactlyOnceCallsInPlace({ value_1 = 10 })
value_1.inc()
var value_1: Int
val l = { value_1 = 10 }
funWithAtLeastOnceCallsInPlace(l)
<!UNINITIALIZED_VARIABLE!>value_1<!>.inc()
}
// TESTCASE NUMBER: 2
fun case_2() {
var value_1: Int
val l = { value_1 = 10 }
val l = fun () { value_1 = 10 }
funWithAtLeastOnceCallsInPlace(l)
<!UNINITIALIZED_VARIABLE!>value_1<!>.inc()
}
// TESTCASE NUMBER: 3
fun case_3() {
var value_1: Int
val l = fun () { value_1 = 10 }
funWithAtLeastOnceCallsInPlace(l)
<!UNINITIALIZED_VARIABLE!>value_1<!>.inc()
}
// TESTCASE NUMBER: 4
fun case_4() {
var value_1: Int
funWithAtLeastOnceCallsInPlace(fun () { value_1 = 10 })
value_1.inc()
}
// TESTCASE NUMBER: 5
fun case_5() {
// TESTCASE NUMBER: 4
fun case_4() {
val value_1: Int
val o = object {
fun l() { <!CAPTURED_VAL_INITIALIZATION!>value_1<!> = 10 }
@@ -1,6 +1,15 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
// SKIP_TXT
/*
* 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
* HELPERS: enumClasses, contractFunctions
*/
// TESTCASE NUMBER: 1
fun case_1(value_1: EnumClass?) {
val value_2: Int
@@ -1,6 +1,15 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
*
* SECTIONS: contracts, analysis, controlFlow, initialization
* NUMBER: 4
* DESCRIPTION: CallsInPlace contract functions with name shadowing
* HELPERS: contractFunctions
*/
// TESTCASE NUMBER: 1
fun case_1() {
val value_1: Int
@@ -1,5 +1,13 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* 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
@@ -1,49 +0,0 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
// FILE: contracts.kt
package contracts
import kotlin.contracts.*
// TESTCASE NUMBER: 3
inline fun case_3(block1: () -> Unit, block2: () -> Unit, block3: () -> Unit) {
contract {
callsInPlace(block1, InvocationKind.EXACTLY_ONCE)
callsInPlace(block2, InvocationKind.AT_LEAST_ONCE)
callsInPlace(block3, InvocationKind.EXACTLY_ONCE)
}
block1()
block2()
block2()
block3()
}
// FILE: main.kt
import contracts.*
// TESTCASE NUMBER: 1
fun case_1() {
val value_1: Int
funWithExactlyOnceCallsInPlace({ value_1 = 11 })
value_1.inc()
}
// TESTCASE NUMBER: 2
fun case_2() {
var value_1: Int
funWithAtLeastOnceCallsInPlace({ value_1 = 11 })
value_1.inc()
}
// TESTCASE NUMBER: 3
fun case_3() {
val value_1: Int
var value_2: Int
val value_3: Int
contracts.case_3({ value_1 = 1 }, { value_2 = 2 }, { value_3 = 3 })
value_1.inc()
value_2.inc()
value_3.inc()
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
@@ -1,37 +0,0 @@
// LANGUAGE: -BreakContinueInInlineLambdas
// !OPT_IN: kotlin.contracts.ExperimentalContracts
// SKIP_TXT
// TESTCASE NUMBER: 1
fun case_1(value_1: Boolean) {
while (value_1) {
funWithExactlyOnceCallsInPlace {
<!UNSUPPORTED_FEATURE!>break<!>
}
println("1")
}
loop@ for (i in 0..10) {
funWithExactlyOnceCallsInPlace {
<!UNSUPPORTED_FEATURE!>break@loop<!>
}
println("1")
}
}
// TESTCASE NUMBER: 2
fun case_2(value_1: Boolean) {
for (i in 0..10) {
funWithExactlyOnceCallsInPlace {
<!UNSUPPORTED_FEATURE!>continue<!>
}
println("1")
}
loop@ while (value_1) {
funWithExactlyOnceCallsInPlace {
<!UNSUPPORTED_FEATURE!>continue@loop<!>
}
println("1")
}
}
@@ -1,3 +1,5 @@
// FIR_IDENTICAL
// LANGUAGE: -BreakContinueInInlineLambdas
// !OPT_IN: kotlin.contracts.ExperimentalContracts
// SKIP_TXT
@@ -2,6 +2,15 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
*
* SECTIONS: contracts, analysis, controlFlow, unreachableCode
* NUMBER: 1
* DESCRIPTION: Unreachable code detection using contract function with CallsInPlace effect
* HELPERS: contractFunctions
*/
// TESTCASE NUMBER: 1
fun case_1() {
funWithExactlyOnceCallsInPlace {
@@ -1,6 +1,15 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
// SKIP_TXT
/*
* 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
* HELPERS: contractFunctions
*/
// TESTCASE NUMBER: 1
fun case_1() {
funWithExactlyOnceCallsInPlace {
@@ -1,6 +1,15 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
// SKIP_TXT
/*
* 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
* HELPERS: contractFunctions
*/
// TESTCASE NUMBER: 1
fun case_1() {
funWithExactlyOnceCallsInPlace {
@@ -1,6 +1,15 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
// SKIP_TXT
/*
* 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
* HELPERS: contractFunctions
*/
// TESTCASE NUMBER: 1
fun case_1(b: Boolean?) {
funWithExactlyOnceCallsInPlace {
@@ -1,6 +1,15 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
// SKIP_TXT
/*
* 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
* HELPERS: contractFunctions
*/
// TESTCASE NUMBER: 1
fun case_1(b: Boolean?, c: Boolean) {
funWithExactlyOnceCallsInPlace {
@@ -1,5 +1,14 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* 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
package contracts