Fix inheritance in stdlib contracts code (KT-26409)

This commit is contained in:
victor.petukhov
2018-09-11 14:19:10 +03:00
parent cba99a1e67
commit 50d9dbbfc1
9 changed files with 50 additions and 49 deletions
@@ -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()
}
@@ -0,0 +1,3 @@
package
public fun case_1(/*0*/ value_1: kotlin.Any?, /*1*/ block: () -> kotlin.Unit): kotlin.Unit
@@ -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
}
@@ -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
@@ -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
}
@@ -1,7 +0,0 @@
package
public fun case_1(): kotlin.Boolean
Returns(TRUE) -> TRUE
public fun case_2(): kotlin.Boolean
Returns(TRUE) -> TRUE || FALSE