Fix inheritance in stdlib contracts code (KT-26409)
This commit is contained in:
+20
@@ -0,0 +1,20 @@
|
||||
// !LANGUAGE: +AllowContractsForCustomFunctions +UseCallsInPlaceEffect
|
||||
// !DIAGNOSTICS: -INVISIBLE_REFERENCE -INVISIBLE_MEMBER -UNUSED_VARIABLE -UNUSED_PARAMETER -UNREACHABLE_CODE -UNUSED_EXPRESSION
|
||||
// !USE_EXPERIMENTAL: kotlin.contracts.ExperimentalContracts
|
||||
|
||||
/*
|
||||
KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
|
||||
|
||||
SECTION: contracts
|
||||
CATEGORY: declarations, contractBuilder, common
|
||||
NUMBER: 13
|
||||
DESCRIPTION: Contract function with CallsInPlace effect with not allowed implies.
|
||||
ISSUES: KT-26409
|
||||
*/
|
||||
|
||||
import kotlin.contracts.*
|
||||
|
||||
fun case_1(value_1: Any?, block: () -> Unit) {
|
||||
<!ERROR_IN_CONTRACT_DESCRIPTION!>contract<!> { callsInPlace(block, InvocationKind.EXACTLY_ONCE) <!UNRESOLVED_REFERENCE!>implies<!> (value_1 != null) }
|
||||
if (value_1 != null) block()
|
||||
}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
package
|
||||
|
||||
public fun case_1(/*0*/ value_1: kotlin.Any?, /*1*/ block: () -> kotlin.Unit): kotlin.Unit
|
||||
+10
-5
@@ -8,14 +8,19 @@
|
||||
SECTION: contracts
|
||||
CATEGORY: declarations, contractBuilder, common
|
||||
NUMBER: 5
|
||||
DESCRIPTION: Contract function with CallsInPlace effect with not allowed implies.
|
||||
DESCRIPTION: contracts with not allowed conditions with boolean constants or constant expressions in implies.
|
||||
UNEXPECTED BEHAVIOUR
|
||||
ISSUES: KT-26409
|
||||
ISSUES: KT-26491
|
||||
*/
|
||||
|
||||
import kotlin.contracts.*
|
||||
|
||||
fun case_1(value_1: Any?, block: () -> Unit) {
|
||||
contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) implies (value_1 != null) }
|
||||
if (value_1 != null) block()
|
||||
fun case_1(): Boolean {
|
||||
contract { returns(true) implies true }
|
||||
return true
|
||||
}
|
||||
|
||||
fun case_2(): Boolean {
|
||||
contract { returns(true) implies (true || false) }
|
||||
return true || false
|
||||
}
|
||||
+5
-2
@@ -1,4 +1,7 @@
|
||||
package
|
||||
|
||||
public fun case_1(/*0*/ value_1: kotlin.Any?, /*1*/ block: () -> kotlin.Unit): kotlin.Unit
|
||||
CallsInPlace(block, EXACTLY_ONCE) -> value_1 != null
|
||||
public fun case_1(): kotlin.Boolean
|
||||
Returns(TRUE) -> TRUE
|
||||
|
||||
public fun case_2(): kotlin.Boolean
|
||||
Returns(TRUE) -> TRUE || FALSE
|
||||
|
||||
-26
@@ -1,26 +0,0 @@
|
||||
// !LANGUAGE: +AllowContractsForCustomFunctions +UseCallsInPlaceEffect
|
||||
// !DIAGNOSTICS: -INVISIBLE_REFERENCE -INVISIBLE_MEMBER -UNUSED_VARIABLE -UNUSED_PARAMETER -UNREACHABLE_CODE -UNUSED_EXPRESSION
|
||||
// !USE_EXPERIMENTAL: kotlin.contracts.ExperimentalContracts
|
||||
|
||||
/*
|
||||
KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
|
||||
SECTION: contracts
|
||||
CATEGORY: declarations, contractBuilder, common
|
||||
NUMBER: 6
|
||||
DESCRIPTION: contracts with not allowed conditions with boolean constants or constant expressions in implies.
|
||||
UNEXPECTED BEHAVIOUR
|
||||
ISSUES: KT-26491
|
||||
*/
|
||||
|
||||
import kotlin.contracts.*
|
||||
|
||||
fun case_1(): Boolean {
|
||||
contract { returns(true) implies true }
|
||||
return true
|
||||
}
|
||||
|
||||
fun case_2(): Boolean {
|
||||
contract { returns(true) implies (true || false) }
|
||||
return true || false
|
||||
}
|
||||
-7
@@ -1,7 +0,0 @@
|
||||
package
|
||||
|
||||
public fun case_1(): kotlin.Boolean
|
||||
Returns(TRUE) -> TRUE
|
||||
|
||||
public fun case_2(): kotlin.Boolean
|
||||
Returns(TRUE) -> TRUE || FALSE
|
||||
Reference in New Issue
Block a user