Add 'mute' concept: move tests with unexpected behaviour to the corresponding folder
This commit is contained in:
+58
@@ -0,0 +1,58 @@
|
||||
// !LANGUAGE: +AllowContractsForCustomFunctions +UseCallsInPlaceEffect
|
||||
// !USE_EXPERIMENTAL: kotlin.contracts.ExperimentalContracts
|
||||
// !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
|
||||
*/
|
||||
|
||||
// FILE: contracts.kt
|
||||
|
||||
package contracts
|
||||
|
||||
import kotlin.contracts.*
|
||||
|
||||
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: usages.kt
|
||||
|
||||
import contracts.*
|
||||
|
||||
fun case_1() {
|
||||
val value_1: Int
|
||||
funWithExactlyOnceCallsInPlace({ <!CAPTURED_VAL_INITIALIZATION!>value_1<!> = 11 })
|
||||
<!UNINITIALIZED_VARIABLE!>value_1<!>.inc()
|
||||
}
|
||||
|
||||
fun case_2() {
|
||||
var value_1: Int
|
||||
funWithAtLeastOnceCallsInPlace({ value_1 = 11 })
|
||||
<!UNINITIALIZED_VARIABLE!>value_1<!>.inc()
|
||||
}
|
||||
|
||||
fun case_3() {
|
||||
val value_1: Int
|
||||
var value_2: Int
|
||||
val value_3: Int
|
||||
contracts.case_3({ <!CAPTURED_VAL_INITIALIZATION!>value_1<!> = 1 }, { value_2 = 2 }, { <!CAPTURED_VAL_INITIALIZATION!>value_3<!> = 3 })
|
||||
<!UNINITIALIZED_VARIABLE!>value_1<!>.inc()
|
||||
<!UNINITIALIZED_VARIABLE!>value_2<!>.inc()
|
||||
<!UNINITIALIZED_VARIABLE!>value_3<!>.inc()
|
||||
}
|
||||
+120
@@ -0,0 +1,120 @@
|
||||
package
|
||||
|
||||
public fun case_1(): kotlin.Unit
|
||||
public fun case_2(): kotlin.Unit
|
||||
public fun case_3(): kotlin.Unit
|
||||
public inline fun </*0*/ T> funWithAtLeastOnceCallsInPlace(/*0*/ block: () -> T): T
|
||||
CallsInPlace(block, AT_LEAST_ONCE)
|
||||
|
||||
public inline fun funWithAtLeastOnceCallsInPlace(/*0*/ block: () -> kotlin.Unit): kotlin.Unit
|
||||
CallsInPlace(block, AT_LEAST_ONCE)
|
||||
|
||||
public inline fun funWithAtMostOnceCallsInPlace(/*0*/ block: () -> kotlin.Unit): kotlin.Unit
|
||||
CallsInPlace(block, AT_MOST_ONCE)
|
||||
|
||||
public inline fun </*0*/ T> funWithExactlyOnceCallsInPlace(/*0*/ block: () -> T): T
|
||||
CallsInPlace(block, EXACTLY_ONCE)
|
||||
|
||||
public inline fun funWithExactlyOnceCallsInPlace(/*0*/ block: () -> kotlin.Unit): kotlin.Unit
|
||||
CallsInPlace(block, EXACTLY_ONCE)
|
||||
|
||||
public fun funWithReturns(/*0*/ cond: kotlin.Boolean): kotlin.Unit
|
||||
Returns(WILDCARD) -> cond
|
||||
|
||||
public fun funWithReturnsAndInvertCondition(/*0*/ cond: kotlin.Boolean): kotlin.Unit
|
||||
Returns(WILDCARD) -> !cond
|
||||
|
||||
public fun funWithReturnsAndInvertTypeCheck(/*0*/ value_1: kotlin.Any?): kotlin.Unit
|
||||
Returns(WILDCARD) -> value_1 !is String
|
||||
|
||||
public fun funWithReturnsAndNotNullCheck(/*0*/ value_1: kotlin.Any?): kotlin.Unit
|
||||
Returns(WILDCARD) -> value_1 != null
|
||||
|
||||
public fun funWithReturnsAndNullCheck(/*0*/ value_1: kotlin.Any?): kotlin.Unit
|
||||
Returns(WILDCARD) -> value_1 == null
|
||||
|
||||
public fun funWithReturnsAndTypeCheck(/*0*/ value_1: kotlin.Any?): kotlin.Unit
|
||||
Returns(WILDCARD) -> value_1 is String
|
||||
|
||||
public fun funWithReturnsFalse(/*0*/ cond: kotlin.Boolean): kotlin.Boolean
|
||||
Returns(FALSE) -> cond
|
||||
|
||||
public fun funWithReturnsFalseAndInvertCondition(/*0*/ cond: kotlin.Boolean): kotlin.Boolean
|
||||
Returns(FALSE) -> !cond
|
||||
|
||||
public fun funWithReturnsFalseAndInvertTypeCheck(/*0*/ value_1: kotlin.Any?): kotlin.Boolean
|
||||
Returns(FALSE) -> value_1 !is String
|
||||
|
||||
public fun funWithReturnsFalseAndNotNullCheck(/*0*/ value_1: kotlin.Number?): kotlin.Boolean
|
||||
Returns(FALSE) -> value_1 != null
|
||||
|
||||
public fun funWithReturnsFalseAndNullCheck(/*0*/ value_1: kotlin.Number?): kotlin.Boolean
|
||||
Returns(FALSE) -> value_1 == null
|
||||
|
||||
public fun funWithReturnsFalseAndTypeCheck(/*0*/ value_1: kotlin.Any?): kotlin.Boolean
|
||||
Returns(FALSE) -> value_1 is String
|
||||
|
||||
public fun funWithReturnsNotNull(/*0*/ cond: kotlin.Boolean): kotlin.Boolean?
|
||||
Returns(NOT_NULL) -> cond
|
||||
|
||||
public fun funWithReturnsNotNullAndInvertCondition(/*0*/ cond: kotlin.Boolean): kotlin.Boolean?
|
||||
Returns(NOT_NULL) -> !cond
|
||||
|
||||
public fun funWithReturnsNotNullAndInvertTypeCheck(/*0*/ value_1: kotlin.Any?): kotlin.Boolean?
|
||||
Returns(NOT_NULL) -> value_1 !is String
|
||||
|
||||
public fun funWithReturnsNotNullAndNotNullCheck(/*0*/ value_1: kotlin.Number?): kotlin.Boolean?
|
||||
Returns(NOT_NULL) -> value_1 != null
|
||||
|
||||
public fun funWithReturnsNotNullAndNullCheck(/*0*/ value_1: kotlin.Number?): kotlin.Boolean?
|
||||
Returns(NOT_NULL) -> value_1 == null
|
||||
|
||||
public fun funWithReturnsNotNullAndTypeCheck(/*0*/ value_1: kotlin.Any?): kotlin.Boolean?
|
||||
Returns(NOT_NULL) -> value_1 is String
|
||||
|
||||
public fun funWithReturnsNull(/*0*/ cond: kotlin.Boolean): kotlin.Boolean?
|
||||
Returns(NULL) -> cond
|
||||
|
||||
public fun funWithReturnsNullAndInvertCondition(/*0*/ cond: kotlin.Boolean): kotlin.Boolean?
|
||||
Returns(NULL) -> !cond
|
||||
|
||||
public fun funWithReturnsNullAndInvertTypeCheck(/*0*/ value_1: kotlin.Any?): kotlin.Boolean?
|
||||
Returns(NULL) -> value_1 !is String
|
||||
|
||||
public fun funWithReturnsNullAndNotNullCheck(/*0*/ value_1: kotlin.Number?): kotlin.Boolean?
|
||||
Returns(NULL) -> value_1 != null
|
||||
|
||||
public fun funWithReturnsNullAndNullCheck(/*0*/ value_1: kotlin.Number?): kotlin.Boolean?
|
||||
Returns(NULL) -> value_1 == null
|
||||
|
||||
public fun funWithReturnsNullAndTypeCheck(/*0*/ value_1: kotlin.Any?): kotlin.Boolean?
|
||||
Returns(NULL) -> value_1 is String
|
||||
|
||||
public fun funWithReturnsTrue(/*0*/ cond: kotlin.Boolean): kotlin.Boolean
|
||||
Returns(TRUE) -> cond
|
||||
|
||||
public fun funWithReturnsTrueAndInvertCondition(/*0*/ cond: kotlin.Boolean): kotlin.Boolean
|
||||
Returns(TRUE) -> !cond
|
||||
|
||||
public fun funWithReturnsTrueAndInvertTypeCheck(/*0*/ value_1: kotlin.Any?): kotlin.Boolean
|
||||
Returns(TRUE) -> value_1 !is String
|
||||
|
||||
public fun funWithReturnsTrueAndNotNullCheck(/*0*/ value_1: kotlin.Any?): kotlin.Boolean
|
||||
Returns(TRUE) -> value_1 != null
|
||||
|
||||
public fun funWithReturnsTrueAndNullCheck(/*0*/ value_1: kotlin.Any?): kotlin.Boolean
|
||||
Returns(TRUE) -> value_1 == null
|
||||
|
||||
public fun funWithReturnsTrueAndTypeCheck(/*0*/ value_1: kotlin.Any?): kotlin.Boolean
|
||||
Returns(TRUE) -> value_1 is String
|
||||
|
||||
public inline fun funWithUnknownCallsInPlace(/*0*/ block: () -> kotlin.Unit): kotlin.Unit
|
||||
CallsInPlace(block, UNKNOWN)
|
||||
|
||||
package contracts {
|
||||
public inline fun case_3(/*0*/ block1: () -> kotlin.Unit, /*1*/ block2: () -> kotlin.Unit, /*2*/ block3: () -> kotlin.Unit): kotlin.Unit
|
||||
CallsInPlace(block1, EXACTLY_ONCE)
|
||||
CallsInPlace(block2, AT_LEAST_ONCE)
|
||||
CallsInPlace(block3, EXACTLY_ONCE)
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user