[FIR] Add CallsInPlace contract analyzer

This commit is contained in:
Oleg Ivanov
2020-07-30 17:13:11 +03:00
parent cc9c5b9e3c
commit 4367d6631f
39 changed files with 4021 additions and 2064 deletions
@@ -0,0 +1,25 @@
// !USE_EXPERIMENTAL: kotlin.contracts.ExperimentalContracts
// FILE: contracts.kt
package contracts
import kotlin.contracts.*
// TESTCASE NUMBER: 1
fun case_1(x: Double = 1.0, block: () -> Unit): Double {
<!WRONG_INVOCATION_KIND!>contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) }<!>
return x
}
// FILE: main.kt
import contracts.*
// TESTCASE NUMBER: 1
fun case_1() {
val value_1: Int
contracts.case_1 { value_1 = 10 }
value_1.inc()
}
@@ -1,4 +1,3 @@
// FIR_IDENTICAL
// !USE_EXPERIMENTAL: kotlin.contracts.ExperimentalContracts
/*
@@ -8,7 +8,7 @@ import kotlin.contracts.*
// TESTCASE NUMBER: 1
fun case_1(x: Double = 1.0, block: () -> Unit): Double {
contract { callsInPlace(block, InvocationKind.AT_LEAST_ONCE) }
<!WRONG_INVOCATION_KIND!>contract { callsInPlace(block, InvocationKind.AT_LEAST_ONCE) }<!>
return x
}