Files
kotlin-fork/compiler/testData/diagnostics/tests/smartCasts/varnotnull/equalityAndIdentity.fir.kt
T
Brian Norman 6df97dd199 [FIR] Add test cases to prove resolution of backlog tickets
^KT-41728 Fixed
^KT-46586 Fixed
^KT-49696 Fixed
^KT-51160 Fixed
^KT-53308 Fixed
2023-11-09 19:28:26 +00:00

40 lines
1023 B
Kotlin
Vendored

// !OPT_IN: kotlin.contracts.ExperimentalContracts
// WITH_STDLIB
// ISSUE: KT-53308
import kotlin.contracts.*
fun <E> checkEquality(arg: E?) { contract { returns() implies (arg != null) } }
fun <E> checkIdentity(arg: E?) { contract { <!ERROR_IN_CONTRACT_DESCRIPTION("NOT_IDENTITY operator call is illegal in contract description")!>returns() implies (arg !== null)<!> } }
fun checkTrue(statement: Boolean) { contract { returns() implies statement } }
fun checkFalse(statement: Boolean) { contract { returns() implies !statement } }
fun consume(arg: String) {}
fun test(a: String?) {
a.let {
checkEquality(it)
consume(it)
}
a.let {
checkIdentity(it)
consume(<!ARGUMENT_TYPE_MISMATCH!>it<!>)
}
a.let {
checkTrue(it != null)
consume(it)
}
a.let {
checkTrue(it !== null)
consume(it)
}
a.let {
checkFalse(it == null)
consume(it)
}
a.let {
checkFalse(it === null)
consume(it)
}
}