// !LANGUAGE: +InlineClasses // IGNORE_BACKEND_FIR: JVM_IR inline class Result(val a: Any?) { fun getOrThrow(): T = a as T } abstract class ResultReceiver { abstract fun receive(result: Result) } inline fun ResultReceiver(crossinline f: (Result) -> Unit): ResultReceiver = object : ResultReceiver() { override fun receive(result: Result) { f(result) } } fun test() { var invoked = false val receiver = ResultReceiver { result -> val intResult = result.getOrThrow() invoked = true } receiver.receive(Result("42")) if (!invoked) { throw RuntimeException("Fail") } } fun box(): String { test() return "OK" }