[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,64 +0,0 @@
// TESTCASE NUMBER: 2, 3, 4
@Target(AnnotationTarget.CONSTRUCTOR)
annotation class Case12_1
@Target(AnnotationTarget.CONSTRUCTOR)
@Retention(AnnotationRetention.SOURCE)
@Repeatable
annotation class Case12_2
// TESTCASE NUMBER: 1
annotation class Case1 <!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>@JvmOverloads<!> constructor(val x: Int)
// TESTCASE NUMBER: 2
annotation class Case2 @[Case12_2 Case12_2 Case12_2 Case12_2 Case12_2 Case12_2 <!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>JvmOverloads<!> Case12_1] constructor(<!MISSING_VAL_ON_ANNOTATION_PARAMETER!>x: Int = 10<!>)
// TESTCASE NUMBER: 3
annotation class Case3 @Case12_2 @Case12_1 @Case12_2 <!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>@`JvmOverloads`<!> @Case12_2 @Case12_2 constructor(<!MISSING_VAL_ON_ANNOTATION_PARAMETER!>x: Int = 10<!>)
// TESTCASE NUMBER: 4
annotation class Case4 @Case12_2 @[Case12_2 Case12_2 Case12_2 Case12_2 Case12_2 Case12_2 <!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>JvmOverloads<!> Case12_1] @Case12_2 @Case12_2 constructor(<!MISSING_VAL_ON_ANNOTATION_PARAMETER!>x: Int = 10<!>)
// TESTCASE NUMBER: 5
annotation class Case5 @[<!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>JvmOverloads<!>] constructor(val x: Int)
// TESTCASE NUMBER: 6
annotation class Case6 <!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>@JvmOverloads<!> constructor()
// TESTCASE NUMBER: 7
annotation class Case7<!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>@JvmOverloads<!> constructor() {}
// TESTCASE NUMBER: 8
annotation class Case8 <!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>@`JvmOverloads`<!> constructor()
// TESTCASE NUMBER: 9
annotation class Case9 <A, Case12_1 : A, Case12_2 : Case12_1, D : Case12_2, E : D> <!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>@JvmOverloads<!> constructor(val x: Int)
// TESTCASE NUMBER: 10
annotation class Case10 <T> <!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>@JvmOverloads<!> constructor(val x: Int)
// TESTCASE NUMBER: 11
annotation class Case11 <T : Number, K : Comparable<K>> <!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>@JvmOverloads<!> constructor(val x: Int)
// TESTCASE NUMBER: 12
annotation class Case12 <T> <!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>@JvmOverloads<!> constructor(val x: Int) where T: Number
// TESTCASE NUMBER: 13
annotation class Case13 constructor(val x: Int) {
annotation class Case1 <!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>@JvmOverloads<!> constructor(val x: Int)
}
// TESTCASE NUMBER: 14
annotation class Case14 <!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>@JvmOverloads<!> constructor(val x: Int) {
annotation class Case1 constructor(val x: Int)
}
// TESTCASE NUMBER: 15
object Case15 {
annotation class Case15 <!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>@JvmOverloads<!> constructor(val x: Int)
}
// TESTCASE NUMBER: 16
class Case16 {
annotation class Case16 <!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>@JvmOverloads<!> constructor(val x: Int)
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
@@ -1,8 +0,0 @@
/*
* TESTCASE NUMBER: 1
* UNEXPECTED BEHAVIOUR
*/
@Target(AnnotationTarget.TYPE)
annotation class Ann(val x: Int)
abstract class Foo : @Ann(<!UNRESOLVED_REFERENCE!>unresolved_reference<!>) Any()
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
@@ -1,14 +0,0 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
// TESTCASE NUMBER: 1, 2, 3
@Target(AnnotationTarget.TYPE)
annotation class Ann(val x: Int)
// TESTCASE NUMBER: 1
fun foo(i: Inv<@Ann(<!UNRESOLVED_REFERENCE!>unresolved_reference<!>) String>) {}
// TESTCASE NUMBER: 2
fun test(vararg a: @Ann(<!UNRESOLVED_REFERENCE!>unresolved_reference<!>) Any) {}
// TESTCASE NUMBER: 3
class A<T>(a: @Ann(<!UNRESOLVED_REFERENCE!>unresolved_reference<!>) T)
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
/*
@@ -11,6 +12,8 @@
*/
// TESTCASE NUMBER: 1, 2, 3
package sometest
@Target(AnnotationTarget.TYPE)
annotation class Ann(val x: Int)
@@ -1,26 +1,28 @@
package
public fun foo(/*0*/ i: Inv<@Ann kotlin.String>): kotlin.Unit
public fun test(/*0*/ vararg a: @Ann kotlin.Any /*kotlin.Array<out @Ann kotlin.Any>*/): kotlin.Unit
package sometest {
public fun foo(/*0*/ i: sometest.Inv<@sometest.Ann kotlin.String>): kotlin.Unit
public fun test(/*0*/ vararg a: @sometest.Ann kotlin.Any /*kotlin.Array<out @sometest.Ann kotlin.Any>*/): kotlin.Unit
public final class A</*0*/ T> {
public constructor A</*0*/ T>(/*0*/ a: @Ann T)
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class A</*0*/ T> {
public constructor A</*0*/ T>(/*0*/ a: @sometest.Ann T)
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.TYPE}) public final annotation class Ann : kotlin.Annotation {
public constructor Ann(/*0*/ x: kotlin.Int)
public final val x: kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.TYPE}) public final annotation class Ann : kotlin.Annotation {
public constructor Ann(/*0*/ x: kotlin.Int)
public final val x: kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class Inv</*0*/ T> {
public constructor Inv</*0*/ T>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public final class Inv</*0*/ T> {
public constructor Inv</*0*/ T>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
@@ -1,5 +0,0 @@
// TESTCASE NUMBER: 1
@Target(AnnotationTarget.TYPE)
annotation class Ann(val x: Int)
fun case_1(): Inv<@Ann(<!UNRESOLVED_REFERENCE!>unresolved_reference<!>) String> = TODO()
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
@@ -8,6 +9,8 @@
*/
// TESTCASE NUMBER: 1
package sometest
@Target(AnnotationTarget.TYPE)
annotation class Ann(val x: Int)
@@ -1,18 +1,20 @@
package
public fun case_1(): Inv<@Ann kotlin.String>
package sometest {
public fun case_1(): sometest.Inv<@sometest.Ann kotlin.String>
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.TYPE}) public final annotation class Ann : kotlin.Annotation {
public constructor Ann(/*0*/ x: kotlin.Int)
public final val x: kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.TYPE}) public final annotation class Ann : kotlin.Annotation {
public constructor Ann(/*0*/ x: kotlin.Int)
public final val x: kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class Inv</*0*/ T> {
public constructor Inv</*0*/ T>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public final class Inv</*0*/ T> {
public constructor Inv</*0*/ T>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
@@ -1,3 +1,12 @@
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: annotations, type-annotations
* NUMBER: 5
* DESCRIPTION: Type annotations on upper bounds with unresolved reference in parameters.
* ISSUES: KT-28424
*/
// TESTCASE NUMBER: 1, 2
@Target(AnnotationTarget.TYPE)
annotation class Ann(val x: Int)
@@ -1,36 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER
// TESTCASE NUMBER: 1, 2
@Target(AnnotationTarget.TYPE)
annotation class Ann(val x: Int)
/*
* TESTCASE NUMBER: 1
* UNEXPECTED BEHAVIOUR
*/
fun case_1(a: Any) {
if (a is @Ann(<!UNRESOLVED_REFERENCE!>unresolved_reference<!>) String) return
}
/*
* TESTCASE NUMBER: 2
* UNEXPECTED BEHAVIOUR
*/
fun case_2(a: Any) {
a as @Ann(<!UNRESOLVED_REFERENCE!>unresolved_reference<!>) String // OK, no error in IDE and in the compiler
}
/*
* TESTCASE NUMBER: 3
* UNEXPECTED BEHAVIOUR
*/
fun case_3_1(a: Any) {}
fun case_3_2(a: Any) {
case_3_1(a as @Ann(<!UNRESOLVED_REFERENCE!>unresolved_reference<!>) String) // OK, no error in IDE and in the compiler
}
// TESTCASE NUMBER: 4
fun case_4(a: Any) {
val x = a as @Ann(<!UNRESOLVED_REFERENCE!>unresolved_reference<!>) String // ERROR, has error in IDE and in the compiler
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER
/*
@@ -1,5 +1,13 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, analysis, common
* NUMBER: 1
* DESCRIPTION: Analysis by contracts with mixed CallsInPlace and Returns effects.
*/
// FILE: contracts.kt
package contracts
@@ -1,5 +1,13 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
*
* SECTIONS: contracts, analysis, common
* NUMBER: 1
* DESCRIPTION: Analysis by contracts with mixed CallsInPlace and Returns effects.
*/
// FILE: contracts.kt
package contracts
@@ -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
@@ -1,6 +1,15 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, analysis, smartcasts
* NUMBER: 1
* DESCRIPTION: Smartcasts using Returns effects with simple type checking, not-null conditions and custom condition (condition for smartcast outside contract).
* HELPERS: contractFunctions
*/
// TESTCASE NUMBER: 1
fun case_1(value_1: Any?) {
funWithReturns(value_1 !is String)
@@ -10,14 +19,14 @@ fun case_1(value_1: Any?) {
// TESTCASE NUMBER: 2
fun case_2(value_1: Int?) {
funWithReturnsAndInvertCondition(value_1 != null)
println(value_1.inc()) // inc resolves to compiler/tests-spec/testData/diagnostics/helpers/classes.kt which accepts `Class?`
println(value_1.inc())
println(value_1<!UNSAFE_CALL!>.<!>unaryPlus())
}
// TESTCASE NUMBER: 3
fun case_3(value_1: Int?) {
funWithReturns(value_1 == null)
println(value_1.inc()) // inc resolves to compiler/tests-spec/testData/diagnostics/helpers/classes.kt which accepts `Class?`
println(value_1.inc())
println(value_1<!UNSAFE_CALL!>.<!>unaryPlus())
}
@@ -45,7 +54,7 @@ object case_7_object {
}
fun case_7() {
funWithReturns(case_7_object.prop_1 == null)
case_7_object.prop_1.inc() // inc resolves to compiler/tests-spec/testData/diagnostics/helpers/classes.kt which accepts `Class?`
case_7_object.prop_1.inc()
}
// TESTCASE NUMBER: 8
@@ -1,5 +1,15 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, analysis, smartcasts
* NUMBER: 10
* DESCRIPTION: Check smartcasts using double negation (returnsFalse/invert type checking/not operator).
* ISSUES: KT-26176
* HELPERS: contractFunctions
*/
// FILE: contracts.kt
package contracts
@@ -1,5 +1,14 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, analysis, smartcasts
* NUMBER: 11
* DESCRIPTION: Smartcast using many of the various Returns effects on the same values.
* HELPERS: contractFunctions
*/
// FILE: contracts.kt
package contracts
@@ -1,5 +1,15 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, analysis, smartcasts
* NUMBER: 12
* DESCRIPTION: Check smartcast to upper bound of the types in disjunction.
* UNEXPECTED BEHAVIOUR
* ISSUES: KT-1982
*/
// FILE: contracts.kt
package contracts
@@ -1,5 +1,14 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, analysis, smartcasts
* NUMBER: 13
* DESCRIPTION: Smartcast using many of the various Returns effects on the same values.
* HELPERS: contractFunctions
*/
// FILE: contracts.kt
package contracts
@@ -1,5 +1,14 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, analysis, smartcasts
* NUMBER: 14
* DESCRIPTION: Smartcast using many of the various Returns effects on the same values.
* HELPERS: contractFunctions
*/
// FILE: contracts.kt
package contracts
@@ -1,5 +1,15 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, analysis, smartcasts
* NUMBER: 15
* DESCRIPTION: Check smartcasts working if type checking for contract function is used
* ISSUES: KT-27241
* HELPERS: contractFunctions
*/
// FILE: contracts.kt
package contracts
@@ -1,6 +1,15 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, analysis, smartcasts
* NUMBER: 2
* DESCRIPTION: Smartcasts using Returns effects with complex (conjunction/disjunction) type checking and not-null conditions outside contract (custom condition).
* HELPERS: contractFunctions
*/
// TESTCASE NUMBER: 1
fun case_1(value_1: Any?, value_2: Any?) {
funWithReturns(value_1 !is String || value_2 !is Number)
@@ -1,5 +1,13 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, analysis, smartcasts
* NUMBER: 3
* DESCRIPTION: Smartcasts using Returns effects with complex (conjunction/disjunction) type checking and not-null conditions inside contract.
*/
// FILE: contracts.kt
package contracts
@@ -1,5 +1,13 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, analysis, smartcasts
* NUMBER: 4
* DESCRIPTION: Smartcasts using Returns effects with simple type checking and not-null conditions on receiver inside contract.
*/
// FILE: contracts.kt
package contracts
@@ -1,5 +1,13 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, analysis, smartcasts
* NUMBER: 5
* DESCRIPTION: Smartcasts using Returns effects with complex (conjunction/disjunction) type checking and not-null conditions on receiver inside contract.
*/
// FILE: contracts.kt
package contracts
@@ -1,5 +1,13 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, analysis, smartcasts
* NUMBER: 6
* DESCRIPTION: Smartcasts using Returns effects with complex (conjunction/disjunction) type checking and not-null conditions on receiver and some values (mixed) inside contract.
*/
// FILE: contracts.kt
package contracts
@@ -1,5 +1,13 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, analysis, smartcasts
* NUMBER: 7
* DESCRIPTION: Smartcasts using Returns effects with nested or subsequent contract function calls.
*/
// FILE: contracts.kt
package contracts
@@ -1,5 +1,15 @@
// LANGUAGE: +WarnAboutNonExhaustiveWhenOnAlgebraicTypes
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, analysis, smartcasts
* NUMBER: 8
* DESCRIPTION: Smartcasts using some Returns effects.
* HELPERS: contractFunctions
*/
// FILE: contracts.kt
package contracts
@@ -100,7 +110,7 @@ fun case_4(value_1: Number, value_2: (() -> Unit)?) {
// TESTCASE NUMBER: 5
fun case_5(value_1: Number?, value_2: String?) {
<!NO_ELSE_IN_WHEN!>when<!> (value_2.case_5(value_1)) {
when (value_2.case_5(value_1)) {
true -> {
println(value_2<!UNSAFE_CALL!>.<!>length)
println(value_1.toByte())
@@ -109,6 +119,7 @@ fun case_5(value_1: Number?, value_2: String?) {
println(value_2<!UNSAFE_CALL!>.<!>length)
println(value_1.inv())
}
else -> {}
}
}
@@ -1,28 +0,0 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
// SKIP_TXT
// TESTCASE NUMBER: 1
fun case_1(arg: Int?) {
funWithAtMostOnceCallsInPlace { arg!! }
arg<!UNSAFE_CALL!>.<!>inc()
}
// TESTCASE NUMBER: 2
fun case_2(arg: Int?) {
funWithUnknownCallsInPlace { arg!! }
arg<!UNSAFE_CALL!>.<!>inc()
}
// TESTCASE NUMBER: 3
fun case_3() {
val value_1: Boolean?
funWithAtMostOnceCallsInPlace { value_1 = false }
<!UNINITIALIZED_VARIABLE!>value_1<!><!UNSAFE_CALL!>.<!>not()
}
// TESTCASE NUMBER: 4
fun case_4() {
val value_1: Boolean?
funWithUnknownCallsInPlace { <!VAL_REASSIGNMENT!>value_1<!> = true }
<!UNINITIALIZED_VARIABLE!>value_1<!><!UNSAFE_CALL!>.<!>not()
}
@@ -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 (POSITIVE)
*
* SECTIONS: contracts, analysis, smartcasts
* NUMBER: 1
* DESCRIPTION: Smartcasts using Returns effects with simple type checking, not-null conditions and custom condition (condition for smartcast outside contract).
* HELPERS: contractFunctions
*/
// TESTCASE NUMBER: 1
fun case_1(value_1: Any?) {
funWithReturns(value_1 is String)
@@ -1,6 +1,16 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
*
* SECTIONS: contracts, analysis, smartcasts
* NUMBER: 10
* DESCRIPTION: Smartcasts with correspond contract function with default value in last parameter.
* ISSUES: KT-26444
* HELPERS: contractFunctions
*/
// FILE: contracts.kt
package contracts
@@ -1,5 +1,15 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
*
* SECTIONS: contracts, analysis, smartcasts
* NUMBER: 11
* DESCRIPTION: Check smartcasts with passing same fields of instances of the same class in contract function with conjunction not-null condition.
* ISSUES: KT-26300
* HELPERS: contractFunctions
*/
// FILE: contracts.kt
package contracts
@@ -1,6 +1,17 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
*
* SECTIONS: contracts, analysis, smartcasts
* NUMBER: 12
* DESCRIPTION: Smartcasts after non-null assertions or not-null value assignment in lambdas of contract function with 'exactly once' or 'at least once' CallsInPlace effects.
* UNEXPECTED BEHAVIOUR
* ISSUES: KT-26148
* HELPERS: contractFunctions
*/
// TESTCASE NUMBER: 1
fun case_1(arg: Int?) {
funWithExactlyOnceCallsInPlace { arg!! }
@@ -1,5 +1,15 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
*
* SECTIONS: contracts, analysis, smartcasts
* NUMBER: 13
* DESCRIPTION: Check smartcast to upper bound of the types in disjunction.
* UNEXPECTED BEHAVIOUR
* ISSUES: KT-1982
*/
// FILE: contracts.kt
package contracts
@@ -1,5 +1,15 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
*
* SECTIONS: contracts, analysis, smartcasts
* NUMBER: 14
* DESCRIPTION: Check smartcast with non-null assertion for a contract function.
* UNEXPECTED BEHAVIOUR
* ISSUES: KT-26856
*/
// FILE: contracts.kt
package contracts
@@ -1,6 +1,15 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
*
* SECTIONS: contracts, analysis, smartcasts
* NUMBER: 2
* DESCRIPTION: Smartcasts using Returns effects with complex (conjunction/disjunction) type checking and not-null conditions outside contract (custom condition).
* HELPERS: contractFunctions
*/
// TESTCASE NUMBER: 1
fun case_1(value_1: Any?, value_2: Any?) {
funWithReturns(value_1 is String && value_2 is Number)
@@ -1,5 +1,13 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
*
* SECTIONS: contracts, analysis, smartcasts
* NUMBER: 3
* DESCRIPTION: Smartcasts using Returns effects with complex (conjunction/disjunction) type checking and not-null conditions inside contract.
*/
// FILE: contracts.kt
package contracts
@@ -1,5 +1,13 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
*
* SECTIONS: contracts, analysis, smartcasts
* NUMBER: 4
* DESCRIPTION: Smartcasts using Returns effects with simple type checking and not-null conditions on receiver inside contract.
*/
// FILE: contracts.kt
package contracts
@@ -1,5 +1,13 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
*
* SECTIONS: contracts, analysis, smartcasts
* NUMBER: 5
* DESCRIPTION: Smartcasts using Returns effects with complex (conjunction/disjunction) type checking and not-null conditions on receiver inside contract.
*/
// FILE: contracts.kt
package contracts
@@ -1,5 +1,13 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
*
* SECTIONS: contracts, analysis, smartcasts
* NUMBER: 6
* DESCRIPTION: Smartcasts using Returns effects with complex (conjunction/disjunction) type checking and not-null conditions on receiver and some values (mixed) inside contract.
*/
// FILE: contracts.kt
package contracts
@@ -1,5 +1,13 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
*
* SECTIONS: contracts, analysis, smartcasts
* NUMBER: 7
* DESCRIPTION: Smartcasts using Returns effects with nested or subsequent contract function calls.
*/
// FILE: contracts.kt
package contracts
@@ -1,5 +1,15 @@
// LANGUAGE: +WarnAboutNonExhaustiveWhenOnAlgebraicTypes
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
*
* SECTIONS: contracts, analysis, smartcasts
* NUMBER: 8
* DESCRIPTION: Smartcasts using some Returns effects.
* HELPERS: contractFunctions
*/
// FILE: contracts.kt
package contracts
@@ -104,7 +114,7 @@ fun case_4(value_1: Number, value_2: (() -> Unit)?) {
* ISSUES: KT-26612
*/
fun case_5(value_1: Number?, value_2: String?) {
<!NO_ELSE_IN_WHEN!>when<!> (value_2.case_5(value_1)) {
when (value_2.case_5(value_1)) {
true -> {
println(value_2.length)
println(value_1.toByte())
@@ -113,6 +123,7 @@ fun case_5(value_1: Number?, value_2: String?) {
println(value_2.length)
println(value_1.inv())
}
else -> {}
}
}
@@ -1,5 +1,14 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
*
* SECTIONS: contracts, analysis, smartcasts
* NUMBER: 9
* DESCRIPTION: Smartcast using complex condition with some contract functions (Returns effect).
* HELPERS: typesProvider, contractFunctions
*/
// FILE: contracts.kt
package contracts
@@ -1,6 +1,14 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -UNREACHABLE_CODE -UNUSED_EXPRESSION
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, declarations, contractBuilder, common
* NUMBER: 1
* DESCRIPTION: Contract isn't first statement.
*/
import kotlin.contracts.*
// TESTCASE NUMBER: 1
@@ -1,5 +1,14 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, declarations, contractBuilder, common
* NUMBER: 10
* DESCRIPTION: Contract with label after 'contract' keyword.
* ISSUES: KT-26153
*/
import kotlin.contracts.*
// TESTCASE NUMBER: 1
@@ -1,5 +1,14 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, declarations, contractBuilder, common
* NUMBER: 11
* DESCRIPTION: Functions with contracts and external contract builder.
* ISSUES: KT-26186
*/
// FILE: builder.kt
package builder
@@ -1,5 +1,14 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, declarations, contractBuilder, common
* NUMBER: 12
* DESCRIPTION: Functions with contracts and external effect builder.
* ISSUES: KT-26186
*/
// FILE: builder.kt
package builder
@@ -1,6 +1,15 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -UNREACHABLE_CODE -UNUSED_EXPRESSION
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, declarations, contractBuilder, common
* NUMBER: 13
* DESCRIPTION: Contract function with CallsInPlace effect with not allowed implies.
* ISSUES: KT-26409
*/
import kotlin.contracts.*
// TESTCASE NUMBER: 1
@@ -1,6 +1,16 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, declarations, contractBuilder, common
* NUMBER: 14
* DESCRIPTION: Contract is first statement in control flow terms, but not in tokens order terms.
* ISSUES: KT-26153
* HELPERS: functions
*/
import kotlin.contracts.*
// TESTCASE NUMBER: 1
@@ -1,6 +1,16 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -UNREACHABLE_CODE -UNUSED_EXPRESSION
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, declarations, contractBuilder, common
* NUMBER: 17
* DESCRIPTION: contracts with Nothing expressions in implies.
* DISCUSSION
* ISSUES: KT-25948
*/
import kotlin.contracts.*
// TESTCASE NUMBER: 1
@@ -1,6 +1,14 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -UNREACHABLE_CODE -UNUSED_EXPRESSION
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, declarations, contractBuilder, common
* NUMBER: 2
* DESCRIPTION: contracts with not allowed simple conditions in implies
*/
import kotlin.contracts.*
// TESTCASE NUMBER: 1
@@ -1,6 +1,14 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -UNREACHABLE_CODE -UNUSED_EXPRESSION
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, declarations, contractBuilder, common
* NUMBER: 3
* DESCRIPTION: contracts with not allowed complex conditions in implies.
*/
import kotlin.contracts.*
// TESTCASE NUMBER: 1
@@ -1,6 +1,14 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -UNREACHABLE_CODE -UNUSED_EXPRESSION
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, declarations, contractBuilder, common
* NUMBER: 4
* DESCRIPTION: contracts with not allowed conditions with constants in implies.
*/
import kotlin.contracts.*
// TESTCASE NUMBER: 1
@@ -1,6 +1,14 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -UNREACHABLE_CODE -UNUSED_EXPRESSION
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, declarations, contractBuilder, common
* NUMBER: 5
* DESCRIPTION: contracts with not allowed expressions in implies.
*/
import kotlin.contracts.*
// TESTCASE NUMBER: 1
@@ -2,6 +2,15 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -UNREACHABLE_CODE -UNUSED_EXPRESSION
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, declarations, contractBuilder, common
* NUMBER: 6
* DESCRIPTION: contracts with not function parameters in implies.
* HELPERS: typesProvider
*/
import kotlin.contracts.*
// TESTCASE NUMBER: 1
@@ -1,6 +1,16 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -UNREACHABLE_CODE -UNUSED_EXPRESSION
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, declarations, contractBuilder, common
* NUMBER: 7
* DESCRIPTION: Contract function with 'this' labeled by not current extensible object
* ISSUES: KT-26149
* HELPERS: typesProvider
*/
import kotlin.contracts.*
// TESTCASE NUMBER: 1
@@ -1,6 +1,14 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -UNREACHABLE_CODE -UNUSED_EXPRESSION
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, declarations, contractBuilder, common
* NUMBER: 8
* DESCRIPTION: Not allowed empty contract.
*/
import kotlin.contracts.*
// TESTCASE NUMBER: 1
@@ -1,6 +1,14 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -UNREACHABLE_CODE -UNUSED_EXPRESSION
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, declarations, contractBuilder, common
* NUMBER: 9
* DESCRIPTION: Function with contract as returned expression.
*/
import kotlin.contracts.*
// TESTCASE NUMBER: 1
@@ -1,5 +1,12 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
*
* SECTIONS: contracts, declarations, contractBuilder, common
* NUMBER: 1
* DESCRIPTION: Functions with simple contracts.
*/
import kotlin.contracts.*
@@ -1,5 +1,14 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, declarations, contractBuilder, effects, callsInPlace
* NUMBER: 1
* DESCRIPTION: contract functions with CallsInPlace with dynamic InvocationKind.
* ISSUES: KT-26152
*/
import kotlin.contracts.*
// TESTCASE NUMBER: 1, 2, 3, 4
@@ -1,5 +1,14 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, declarations, contractBuilder, effects, callsInPlace
* NUMBER: 2
* DESCRIPTION: functions with contract and duplicate CallsInPlace.
* ISSUES: KT-26150
*/
import kotlin.contracts.*
// TESTCASE NUMBER: 1
@@ -1,6 +1,15 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, declarations, contractBuilder, effects, common
* NUMBER: 1
* DESCRIPTION: Indirect effect functions call.
* ISSUES: KT-26175
*/
import kotlin.contracts.*
// TESTCASE NUMBER: 1
@@ -1,5 +1,14 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, declarations, contractBuilder, effects, returns
* NUMBER: 1
* DESCRIPTION: Using equality with expressions in implies.
* ISSUES: KT-26178
*/
import kotlin.contracts.*
// TESTCASE NUMBER: 1
@@ -1,5 +1,13 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, declarations, contractBuilder, effects, returns
* NUMBER: 2
* DESCRIPTION: Using equality with not labeled 'this' in implies.
*/
import kotlin.contracts.*
// TESTCASE NUMBER: 1
@@ -1,5 +1,15 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, declarations, contractBuilder, effects, returns
* NUMBER: 3
* DESCRIPTION: Using reference equality in implies.
* ISSUES: KT-26177
* HELPERS: objects
*/
import kotlin.contracts.*
// TESTCASE NUMBER: 1
@@ -1,5 +1,14 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, declarations, contractBuilder, effects, returns
* NUMBER: 4
* DESCRIPTION: Using equality with literals in implies.
* ISSUES: KT-26178
*/
import kotlin.contracts.*
// TESTCASE NUMBER: 1
@@ -1,5 +1,14 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, declarations, contractBuilder, effects, returns
* NUMBER: 5
* DESCRIPTION: Contract on the extension function with Boolean upper bound (Boolean or Nothing) or smartcast to Boolean.
* DISCUSSION
*/
import kotlin.contracts.*
// TESTCASE NUMBER: 1
@@ -1,5 +1,13 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, declarations, contractBuilder, effects, returns
* NUMBER: 6
* DESCRIPTION: Contract on the extension function with smartcast to Boolean.
*/
import kotlin.contracts.*
// TESTCASE NUMBER: 1
@@ -1,6 +1,15 @@
// !LANGUAGE: +AllowContractsForNonOverridableMembers +AllowReifiedGenericsInContracts
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, declarations, contractBuilder, effects, returns
* NUMBER: 7
* DESCRIPTION: Returns effect with type checking with generic parameter
* ISSUES: KT-26296
*/
import kotlin.contracts.*
// TESTCASE NUMBER: 1
@@ -1,76 +0,0 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
// !DIAGNOSTICS: -FINAL_UPPER_BOUND
import kotlin.contracts.*
// TESTCASE NUMBER: 1
fun case_1(value_1: Boolean) {
contract { returns() implies (value_1) }
if (!value_1) throw Exception()
}
// TESTCASE NUMBER: 2
fun case_2(value_1: Boolean): Boolean {
contract { returns(false) implies (!value_1) }
return value_1
}
// TESTCASE NUMBER: 3
fun Boolean.case_3() {
contract { returns() implies (!this@case_3) }
if (this@case_3) throw Exception()
}
// TESTCASE NUMBER: 5
fun case_5(value_1: Any?) {
contract { returns() implies (value_1 is String) }
if (value_1 !is String) throw Exception()
}
// TESTCASE NUMBER: 6
fun case_6(value_1: Any?) {
contract { returns() implies (value_1 !is String?) }
if (value_1 is String?) throw Exception()
}
// TESTCASE NUMBER: 7
fun Any?.case_7() {
contract { returns() implies (this@case_7 is Number) }
if (this !is Number) throw Exception()
}
// TESTCASE NUMBER: 8
fun <T>T?.case_8() {
contract { returns() implies (this@case_8 !is ClassLevel3?) }
if (this is ClassLevel3?) throw Exception()
}
// TESTCASE NUMBER: 9
fun <T : Number?>T.case_9(): Boolean? {
contract { returns(null) implies (this@case_9 is Byte?) }
return if (this is Byte?) null else true
}
// TESTCASE NUMBER: 10
fun case_10(value_1: Any?) {
contract { returns() implies (value_1 == null) }
if (value_1 != null) throw Exception()
}
// TESTCASE NUMBER: 11
fun case_11(value_1: Any?): Boolean? {
contract { returns(null) implies (value_1 != null) }
return if (value_1 != null) null else true
}
// TESTCASE NUMBER: 12
fun Char.case_12() {
contract { returns() implies (<!SENSELESS_COMPARISON!>this@case_12 == null<!>) }
if (<!SENSELESS_COMPARISON!>this@case_12 != null<!>) throw Exception()
}
// TESTCASE NUMBER: 13
fun <T : Number>T?.case_13() {
contract { returns() implies (this@case_13 == null) }
if (this != null) throw Exception()
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !OPT_IN: kotlin.contracts.ExperimentalContracts
// !DIAGNOSTICS: -FINAL_UPPER_BOUND
@@ -1,5 +1,13 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, declarations, contractFunction
* NUMBER: 1
* DESCRIPTION: Check that recursion isn't allowed in contract functions with CallsInPlace effect.
*/
import kotlin.contracts.*
// TESTCASE NUMBER: 1
@@ -1,6 +1,16 @@
// !LANGUAGE: +AllowContractsForNonOverridableMembers +AllowReifiedGenericsInContracts
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, declarations, contractFunction
* NUMBER: 2
* DESCRIPTION: Check report about use contracts in literal functions, lambdas or not top-level functions.
* ISSUES: KT-26149
* HELPERS: classes
*/
import kotlin.contracts.*
// TESTCASE NUMBER: 1
@@ -1,6 +1,15 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: contracts, declarations, contractFunction
* NUMBER: 4
* DESCRIPTION: Check that fun with contract and CallsInPlace effect is an inline function.
* ISSUES: KT-27090
*/
import kotlin.contracts.*
// TESTCASE NUMBER: 1
@@ -1,5 +1,13 @@
// !OPT_IN: kotlin.contracts.ExperimentalContracts
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
*
* SECTIONS: contracts, declarations, contractFunction
* NUMBER: 1
* DESCRIPTION: Use a contract function before the declaration it.
*/
import kotlin.contracts.*
// TESTCASE NUMBER: 1
@@ -1,7 +1,16 @@
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_VARIABLE
// !DIAGNOSTICS: -UNUSED_EXPRESSION
// SKIP_TXT
// WITH_EXTENDED_CHECKERS
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: dfa
* NUMBER: 1
* DESCRIPTION: Raw data flow analysis test
* HELPERS: classes, objects, functions, typealiases, properties, enumClasses, interfaces, sealedClasses
*/
// TESTCASE NUMBER: 1
fun case_1(x: Any?) {
if (x != null is Boolean) {
@@ -237,7 +246,7 @@ fun case_14() {
// TESTCASE NUMBER: 15
fun case_15(x: EmptyObject) {
val t = if (<!FORBIDDEN_IDENTITY_EQUALS!>x === <!USELESS_IS_CHECK!><!USELESS_IS_CHECK!>null is Boolean is Boolean<!> is Boolean<!><!>) "" else {
val <!UNUSED_VARIABLE!>t<!> = if (<!FORBIDDEN_IDENTITY_EQUALS!>x === <!USELESS_IS_CHECK!><!USELESS_IS_CHECK!>null is Boolean is Boolean<!> is Boolean<!><!>) "" else {
<!DEBUG_INFO_EXPRESSION_TYPE("EmptyObject")!>x<!>
<!DEBUG_INFO_EXPRESSION_TYPE("EmptyObject")!>x<!>.equals(null)
<!DEBUG_INFO_EXPRESSION_TYPE("EmptyObject")!>x<!>.propT
@@ -1,5 +1,6 @@
// !DIAGNOSTICS: -UNUSED_EXPRESSION
// SKIP_TXT
// WITH_EXTENDED_CHECKERS
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
@@ -1,6 +1,15 @@
// !DIAGNOSTICS: -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: dfa
* NUMBER: 10
* DESCRIPTION: Raw data flow analysis test
* HELPERS: classes, objects, typealiases, enumClasses, interfaces, sealedClasses
*/
// TESTCASE NUMBER: 1
fun case_1() {
var x: Any? = null
@@ -1,6 +1,17 @@
// !DIAGNOSTICS: -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: dfa
* NUMBER: 11
* DESCRIPTION: Raw data flow analysis test
* HELPERS: classes, objects, typealiases, functions, enumClasses, interfaces, sealedClasses
* UNEXPECTED BEHAVIOUR
* ISSUES: KT-28369
*/
// TESTCASE NUMBER: 1
fun case_1() {
var x: Boolean? = true

Some files were not shown because too many files have changed in this diff Show More