[FIR] KT-56877: Allow referencing implicit receivers in class contracts

This commit is contained in:
Nikolay Lunyak
2023-03-07 13:27:44 +02:00
committed by Space Team
parent 409249267c
commit c7a71fec17
10 changed files with 20 additions and 67 deletions
@@ -11,16 +11,16 @@ object case_1 {
private const val value_3 = false
fun case_1_1(): Boolean? {
contract { <!ERROR_IN_CONTRACT_DESCRIPTION!>returnsNotNull() implies (<!UNRESOLVED_REFERENCE!>value_1<!>)<!> }
contract { <!ERROR_IN_CONTRACT_DESCRIPTION!>returnsNotNull() implies (value_1)<!> }
return if (value_1) true else null
}
fun case_1_2(): Boolean? {
contract { <!ERROR_IN_CONTRACT_DESCRIPTION!>returns(null) implies (<!UNRESOLVED_REFERENCE!>value_2<!>)<!> }
contract { <!ERROR_IN_CONTRACT_DESCRIPTION!>returns(null) implies (value_2)<!> }
return if (value_2) null else true
}
fun case_1_3(): Boolean {
contract { <!ERROR_IN_CONTRACT_DESCRIPTION!>returns(true) implies (<!UNRESOLVED_REFERENCE!>value_3<!>)<!> }
contract { <!ERROR_IN_CONTRACT_DESCRIPTION!>returns(true) implies (value_3)<!> }
return value_3
}
}
@@ -42,22 +42,22 @@ class case_2(value_5: Boolean, val value_1: Boolean) {
}
fun case_2_2(): Boolean? {
contract { <!ERROR_IN_CONTRACT_DESCRIPTION!>returns(null) implies (<!UNRESOLVED_REFERENCE!>value_1<!>)<!> }
contract { <!ERROR_IN_CONTRACT_DESCRIPTION!>returns(null) implies (value_1)<!> }
return if (value_1) null else true
}
fun case_2_3(): Boolean {
contract { <!ERROR_IN_CONTRACT_DESCRIPTION!>returns(true) implies (<!UNRESOLVED_REFERENCE!>value_2<!>)<!> }
contract { <!ERROR_IN_CONTRACT_DESCRIPTION!>returns(true) implies (value_2)<!> }
return value_2
}
fun case_2_4(): Boolean {
contract { <!ERROR_IN_CONTRACT_DESCRIPTION!>returns(false) implies (<!UNRESOLVED_REFERENCE!>value_3<!>)<!> }
contract { <!ERROR_IN_CONTRACT_DESCRIPTION!>returns(false) implies (value_3)<!> }
return !(value_3)
}
inline fun <reified K : Number> K.case_2_5(): Boolean? {
contract { <!ERROR_IN_CONTRACT_DESCRIPTION!>returnsNotNull() implies (<!UNRESOLVED_REFERENCE!>value_4<!>)<!> }
contract { <!ERROR_IN_CONTRACT_DESCRIPTION!>returnsNotNull() implies (<!NON_PUBLIC_CALL_FROM_PUBLIC_INLINE!>value_4<!>)<!> }
return if (<!NON_PUBLIC_CALL_FROM_PUBLIC_INLINE!>value_4<!>) true else null
}
}