Report CONTRACT_NOT_ALLOWED diagnostic on extension property getter/setter

KT-27090
This commit is contained in:
Dmitriy Novozhilov
2019-02-22 13:48:33 +03:00
parent b484e03fa8
commit 84da8b6279
3 changed files with 9 additions and 13 deletions
@@ -7,7 +7,6 @@
* SECTIONS: contracts, declarations, contractFunction
* NUMBER: 4
* DESCRIPTION: Check that fun with contract and CallsInPlace effect is an inline function.
* UNEXPECTED BEHAVIOUR
* ISSUES: KT-27090
*/
@@ -16,7 +15,7 @@ import kotlin.contracts.*
// TESTCASE NUMBER: 1
val Boolean.case_1: () -> Unit
get() {
contract {
<!CONTRACT_NOT_ALLOWED!>contract<!> {
returns() implies (this@case_1)
}
return {}
@@ -25,7 +24,7 @@ val Boolean.case_1: () -> Unit
// TESTCASE NUMBER: 2
val (() -> Unit).case_2: () -> Unit
get() {
contract {
<!CONTRACT_NOT_ALLOWED!>contract<!> {
callsInPlace(this@case_2, InvocationKind.EXACTLY_ONCE)
}
return {}
@@ -37,7 +36,7 @@ var Boolean.case_3: () -> Unit
return {}
}
set(value) {
contract {
<!CONTRACT_NOT_ALLOWED!>contract<!> {
callsInPlace(value, InvocationKind.EXACTLY_ONCE)
}
}
@@ -48,7 +47,7 @@ var (() -> Unit).case_4: () -> Unit
return {}
}
set(value) {
contract {
<!CONTRACT_NOT_ALLOWED!>contract<!> {
callsInPlace(this@case_4, InvocationKind.EXACTLY_ONCE)
}
}
@@ -56,7 +55,7 @@ var (() -> Unit).case_4: () -> Unit
// TESTCASE NUMBER: 5
val Boolean.case_5: () -> Unit
get() {
contract {
<!CONTRACT_NOT_ALLOWED!>contract<!> {
returns() implies (this@case_5)
}