Diagnostics: add diagnostic for reporting contract description blocks in old frontend

This commit is contained in:
Arsen Nagdalian
2020-08-16 00:08:50 +03:00
parent 80d7f6b688
commit 8b4e8a2c0c
17 changed files with 299 additions and 1 deletions
@@ -0,0 +1,24 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
import kotlin.contracts.*
fun foo(arg: Any?, num: Int?, block: () -> Unit) contract <!UNSUPPORTED!>[
returns() implies (arg is String),
returns() implies (num != null),
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
]<!> {
require(arg is String)
require(num != null)
block()
}
fun bar(arg: Any?, block: () -> Int): Boolean contract <!UNSUPPORTED!>[
returns(true) implies (arg != null),
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
]<!> {
val num = block()
if (arg != null) {
return true
}
return false
}