Move requireOrDescribe to :core:compiler.common

This commit is contained in:
Dmitriy Novozhilov
2020-08-28 13:35:52 +03:00
parent f010dc533c
commit 07c353973d
6 changed files with 20 additions and 22 deletions
@@ -7,6 +7,8 @@ package org.jetbrains.kotlin.types.model
import org.jetbrains.kotlin.types.AbstractTypeCheckerContext
import org.jetbrains.kotlin.types.Variance
import kotlin.contracts.ExperimentalContracts
import kotlin.contracts.contract
interface KotlinTypeMarker
interface TypeArgumentMarker
@@ -363,3 +365,16 @@ inline fun TypeArgumentListMarker.all(
}
return true
}
@OptIn(ExperimentalContracts::class)
fun requireOrDescribe(condition: Boolean, value: Any?) {
contract {
returns() implies condition
}
require(condition) {
val typeInfo = if (value != null) {
", type = '${value::class}'"
} else ""
"Unexpected: value = '$value'$typeInfo"
}
}