// SKIP_INLINE_CHECK_IN: enumOrThrow$default // TARGET_BACKEND: JVM // WITH_STDLIB // FILE: 1.kt 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 }