// !LANGUAGE: +InlineClasses // IGNORE_BACKEND: JVM_IR inline class SuccessOrFailure(val value: Any?) { val isFailure: Boolean get() = value is Failure public companion object { public inline fun success(value: T): SuccessOrFailure = SuccessOrFailure(value) public inline fun failure(exception: Throwable): SuccessOrFailure = SuccessOrFailure(Failure(exception)) } class Failure ( val exception: Throwable ) } inline fun runCatching(block: () -> R): SuccessOrFailure { return try { SuccessOrFailure.success(block()) } catch (e: Throwable) { SuccessOrFailure.failure(e) } } class Box(val x: T) fun box(): String { val r = runCatching { TODO() } val b = Box(r) if (r.isFailure != b.x.isFailure || !r.isFailure) return "Fail: r=${r.isFailure}; b.x=${b.x.isFailure}" return "OK" }