4d5a4ccd6b
^KT-51704 Fixed
39 lines
1.0 KiB
Kotlin
Vendored
39 lines
1.0 KiB
Kotlin
Vendored
// FIR_IDENTICAL
|
|
// ISSUE: KT-51704
|
|
|
|
import Foo.Companion.checkSomethingCompanion
|
|
import Bar.checkSomethingObject
|
|
import kotlin.contracts.ExperimentalContracts
|
|
import kotlin.contracts.contract
|
|
|
|
class Foo {
|
|
companion object {
|
|
@OptIn(ExperimentalContracts::class)
|
|
fun checkSomethingCompanion(condition: Boolean, message: String) {
|
|
contract {
|
|
returns() implies (condition)
|
|
}
|
|
if (!condition)
|
|
throw Exception(message)
|
|
}
|
|
}
|
|
}
|
|
|
|
object Bar {
|
|
@OptIn(ExperimentalContracts::class)
|
|
fun checkSomethingObject(condition: Boolean, message: String) {
|
|
contract {
|
|
returns() implies (condition)
|
|
}
|
|
if (!condition)
|
|
throw Exception(message)
|
|
}
|
|
}
|
|
|
|
fun usage() {
|
|
Foo.checkSomethingCompanion(1 == 2, "wat") // ok
|
|
checkSomethingCompanion(1 == 2, "wat") // compiler crash
|
|
Bar.checkSomethingObject(1 == 2, "wat") // ok
|
|
checkSomethingObject(1 == 2, "wat") // compiler crash
|
|
}
|