[FIR] Move FirReturnsImpliesAnalyzer to the extended checkers
This commit is contained in:
committed by
Space Team
parent
db720d375d
commit
884cd6c754
+2
-2
@@ -28,12 +28,12 @@ inline fun case_1(value_1: Int?, block: () -> Unit): Boolean {
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
inline fun <T> T?.case_2(value_1: Int?, value_2: Any?, block: () -> Unit): Boolean? {
|
||||
<!WRONG_IMPLIES_CONDITION, WRONG_IMPLIES_CONDITION, WRONG_IMPLIES_CONDITION!>contract {
|
||||
contract {
|
||||
callsInPlace(block, InvocationKind.AT_MOST_ONCE)
|
||||
returns(true) implies (value_1 == null && this@case_2 == null && value_2 !is Boolean?)
|
||||
returns(false) implies (value_2 is Boolean?)
|
||||
returns(null) implies ((value_1 != null || this@case_2 != null) && value_2 !is Boolean?)
|
||||
}<!>
|
||||
}
|
||||
|
||||
block()
|
||||
|
||||
|
||||
Vendored
+8
-8
@@ -18,45 +18,45 @@ import kotlin.contracts.*
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun <T> T?.case_3(value_1: Int?, value_2: Boolean): Boolean {
|
||||
<!WRONG_IMPLIES_CONDITION, WRONG_IMPLIES_CONDITION!>contract {
|
||||
contract {
|
||||
returns(true) implies (value_1 != null)
|
||||
returns(false) implies (value_1 == null && !value_2)
|
||||
returns(null) implies (value_1 == null && value_2)
|
||||
}<!>
|
||||
}
|
||||
|
||||
return value_1 == null
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 4
|
||||
fun case_4(value_1: Number, block: (() -> Unit)?): Boolean? {
|
||||
<!WRONG_IMPLIES_CONDITION, WRONG_IMPLIES_CONDITION!>contract {
|
||||
contract {
|
||||
returns(true) implies (block != null)
|
||||
returns(false) implies (value_1 is Int)
|
||||
returns(null) implies (block == null)
|
||||
}<!>
|
||||
}
|
||||
|
||||
return <!SENSELESS_COMPARISON!>value_1 == null<!>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 5
|
||||
fun String?.case_5(value_1: Number?): Boolean? {
|
||||
<!WRONG_IMPLIES_CONDITION, WRONG_IMPLIES_CONDITION!>contract {
|
||||
contract {
|
||||
returns(true) implies (value_1 == null)
|
||||
returns(false) implies (this@case_5 == null)
|
||||
returnsNotNull() implies (value_1 is Int)
|
||||
}<!>
|
||||
}
|
||||
|
||||
return value_1 == null
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 6
|
||||
fun <T> T?.case_6(value_1: Number, value_2: String?): Boolean? {
|
||||
<!WRONG_IMPLIES_CONDITION, WRONG_IMPLIES_CONDITION, WRONG_IMPLIES_CONDITION!>contract {
|
||||
contract {
|
||||
returns(true) implies (this@case_6 == null)
|
||||
returns(false) implies (value_1 is Int)
|
||||
returns(null) implies (this@case_6 is String)
|
||||
returnsNotNull() implies (value_2 == null)
|
||||
}<!>
|
||||
}
|
||||
|
||||
return <!SENSELESS_COMPARISON!>value_1 == null<!>
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -25,7 +25,7 @@ fun case_1(value_1: Int?, value_2: Int? = 10): Boolean {
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: Int? = 10, value_2: Int? = 10, value_3: Int? = 10): Boolean {
|
||||
<!WRONG_IMPLIES_CONDITION!>contract { returns(true) implies (value_2 != null) }<!>
|
||||
contract { returns(true) implies (value_2 != null) }
|
||||
return value_1 != null
|
||||
}
|
||||
|
||||
|
||||
Vendored
+6
-6
@@ -27,27 +27,27 @@ fun case_1(value_1: Int?): Boolean? {
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: Int?): Boolean {
|
||||
<!WRONG_IMPLIES_CONDITION!>contract {
|
||||
contract {
|
||||
returns(false) implies (value_1 != null)
|
||||
}<!>
|
||||
}
|
||||
|
||||
return value_1 != null
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case_3(value_1: Int?): Boolean? {
|
||||
<!WRONG_IMPLIES_CONDITION!>contract {
|
||||
contract {
|
||||
returnsNotNull() implies (value_1 != null)
|
||||
}<!>
|
||||
}
|
||||
|
||||
return value_1 != null
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 4
|
||||
fun case_4(value_1: Any?): Boolean {
|
||||
<!WRONG_IMPLIES_CONDITION!>contract {
|
||||
contract {
|
||||
returnsNotNull() implies (value_1 is Number)
|
||||
}<!>
|
||||
}
|
||||
|
||||
return value_1 is Number
|
||||
}
|
||||
|
||||
Vendored
+6
-6
@@ -29,34 +29,34 @@ fun <T> T?.case_3(value_1: Int?, value_2: Boolean): Boolean {
|
||||
|
||||
// TESTCASE NUMBER: 4
|
||||
fun case_4(value_1: Number, block: (() -> Unit)?): Boolean? {
|
||||
<!WRONG_IMPLIES_CONDITION!>contract {
|
||||
contract {
|
||||
returns(true) implies (value_1 is Int)
|
||||
returns(false) implies (block == null)
|
||||
returns(null) implies (block != null)
|
||||
}<!>
|
||||
}
|
||||
|
||||
return <!SENSELESS_COMPARISON!>value_1 == null<!>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 5
|
||||
fun String?.case_5(value_1: Number?): Boolean? {
|
||||
<!WRONG_IMPLIES_CONDITION, WRONG_IMPLIES_CONDITION, WRONG_IMPLIES_CONDITION!>contract {
|
||||
contract {
|
||||
returns(true) implies (value_1 != null)
|
||||
returns(false) implies (value_1 is Int)
|
||||
returnsNotNull() implies (this@case_5 != null)
|
||||
}<!>
|
||||
}
|
||||
|
||||
return value_1 == null
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 6
|
||||
fun <T> T?.case_6(value_1: Number, value_2: String?): Boolean? {
|
||||
<!WRONG_IMPLIES_CONDITION, WRONG_IMPLIES_CONDITION, WRONG_IMPLIES_CONDITION!>contract {
|
||||
contract {
|
||||
returns(true) implies (this@case_6 != null)
|
||||
returns(false) implies (this@case_6 is String)
|
||||
returns(null) implies (value_1 is Int)
|
||||
returnsNotNull() implies (value_2 != null)
|
||||
}<!>
|
||||
}
|
||||
|
||||
return <!SENSELESS_COMPARISON!>value_1 == null<!>
|
||||
}
|
||||
|
||||
-39
@@ -1,39 +0,0 @@
|
||||
// !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.*
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
inline fun case_1(block: () -> Unit) {
|
||||
contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) }
|
||||
return block()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
inline fun case_2(value_1: Int?, block: () -> Unit): Boolean {
|
||||
contract {
|
||||
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
|
||||
returns(true) implies (value_1 != null)
|
||||
}
|
||||
block()
|
||||
return value_1 != null
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
inline fun <T> T?.case_3(value_1: Int?, value_2: Boolean, value_3: Int?, block: () -> Unit): Boolean? {
|
||||
<!WRONG_IMPLIES_CONDITION!>contract {
|
||||
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
|
||||
returns(true) implies (value_1 != null)
|
||||
returns(false) implies (!value_2)
|
||||
returnsNotNull() implies (this@case_3 != null && value_3 != null)
|
||||
}<!>
|
||||
block()
|
||||
return value_1 != null
|
||||
}
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !OPT_IN: kotlin.contracts.ExperimentalContracts
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user