[FIR] Implement checks for contract not allowed
^KT-55423 Fixed
This commit is contained in:
committed by
Space Team
parent
b2fbf8bed5
commit
f946ddeb40
+3
-3
@@ -6,7 +6,7 @@ import kotlin.contracts.*
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1() {
|
||||
val fun_1 = fun(block: () -> Unit) {
|
||||
contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) }
|
||||
<!CONTRACT_NOT_ALLOWED!>contract<!> { callsInPlace(block, InvocationKind.EXACTLY_ONCE) }
|
||||
return block()
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ fun case_1() {
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2() {
|
||||
val lambda_1 = { block: () -> Unit ->
|
||||
contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) }
|
||||
<!CONTRACT_NOT_ALLOWED!>contract<!> { callsInPlace(block, InvocationKind.EXACTLY_ONCE) }
|
||||
block()
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ class case_4 : ClassLevel3() {
|
||||
|
||||
fun <T>T.case_4_3_wrap() {
|
||||
fun case_4_3_contract() {
|
||||
contract { returns() implies (this@case_4_3_wrap is ClassLevel1) }
|
||||
<!CONTRACT_NOT_ALLOWED!>contract<!> { <!ERROR_IN_CONTRACT_DESCRIPTION!>returns() implies (this@case_4_3_wrap is ClassLevel1)<!> }
|
||||
if (this@case_4_3_wrap !is ClassLevel1) throw Exception()
|
||||
}
|
||||
case_4_3_contract()
|
||||
|
||||
+5
-5
@@ -6,7 +6,7 @@ import kotlin.contracts.*
|
||||
// TESTCASE NUMBER: 1
|
||||
val Boolean.case_1: () -> Unit
|
||||
get() {
|
||||
contract {
|
||||
<!CONTRACT_NOT_ALLOWED!>contract<!> {
|
||||
returns() implies (this@case_1)
|
||||
}
|
||||
return {}
|
||||
@@ -15,7 +15,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 {}
|
||||
@@ -27,7 +27,7 @@ var Boolean.case_3: () -> Unit
|
||||
return {}
|
||||
}
|
||||
set(value) {
|
||||
<!WRONG_INVOCATION_KIND!>contract {
|
||||
<!WRONG_INVOCATION_KIND!><!CONTRACT_NOT_ALLOWED!>contract<!> {
|
||||
callsInPlace(value, InvocationKind.EXACTLY_ONCE)
|
||||
}<!>
|
||||
}
|
||||
@@ -38,7 +38,7 @@ var (() -> Unit).case_4: () -> Unit
|
||||
return {}
|
||||
}
|
||||
set(value) {
|
||||
contract {
|
||||
<!CONTRACT_NOT_ALLOWED!>contract<!> {
|
||||
callsInPlace(this@case_4, InvocationKind.EXACTLY_ONCE)
|
||||
}
|
||||
}
|
||||
@@ -46,7 +46,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)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user