[FIR] Implement checks for contract not allowed

^KT-55423 Fixed
This commit is contained in:
Kirill Rakhman
2023-02-08 12:03:36 +01:00
committed by Space Team
parent b2fbf8bed5
commit f946ddeb40
50 changed files with 377 additions and 178 deletions
@@ -10,7 +10,7 @@ inline fun <reified T> requreIsInstance(value: Any) contract <!UNSUPPORTED_FEATU
}
val Any?.myLength: Int?
get() contract <!UNSUPPORTED_FEATURE!>[
get() contract <!CONTRACT_NOT_ALLOWED, UNSUPPORTED_FEATURE!>[
<!ERROR_IN_CONTRACT_DESCRIPTION!>returnsNotNull() implies (this@length is String)<!>
]<!> = (this as? String)?.length
@@ -12,8 +12,8 @@ fun Any?.isNotNull(): Boolean {
@OptIn(ExperimentalContracts::class)
val Any?.isNotNull: Boolean
get() {
contract {
<!CONTRACT_NOT_ALLOWED!>contract<!> {
returns(true) implies (this@isNotNull != null)
}
return this@isNotNull != null
}
}
@@ -7,13 +7,13 @@ interface A {
@OptIn(ExperimentalContracts::class)
var Any?.isNotNull: Boolean
get() {
contract {
<!CONTRACT_NOT_ALLOWED!>contract<!> {
returns(true) implies (this@isNotNull != null)
}
return this != null
}
set(value) {
<!WRONG_IMPLIES_CONDITION!>contract {
<!WRONG_IMPLIES_CONDITION!><!CONTRACT_NOT_ALLOWED!>contract<!> {
returns() implies (this@isNotNull != null)
<!ERROR_IN_CONTRACT_DESCRIPTION!>require(<!SENSELESS_COMPARISON!>this != null<!>)<!>
}<!>