// TARGET_BACKEND: JVM // WITH_RUNTIME // FILE: 1.kt // SKIP_INLINE_CHECK_IN: enumOrThrow$default package test enum class TarEnum { OK } inline fun > String?.enumOrNull(): T? { this ?: return null return enumValues().firstOrNull { it.name == this } } inline fun > String?.enumOrThrow(handleNull: () -> Throwable = { IllegalArgumentException("Enum type ${T::class.java} not contain value=$this") }): T { return this.enumOrNull() ?: throw handleNull() } // FILE: 2.kt import test.* fun box(): String { return "OK".enumOrThrow()!!.name }