| // OPT_IN: kotlin.js.ExperimentalJsExport | |
| // FIR_IDENTICAL | |
| @file:JsExport | |
| interface Optional<out T> { | |
| @JsName("valueOrThrowException") | |
| fun valueOrThrow(exp: Throwable): T | |
| fun valueOrThrow(): T = valueOrThrow(NoSuchElementException("Optional has no value")) | |
| } | |
| abstract class None<out T : Any> private constructor() : Optional<T> { | |
| companion object : None<Nothing>() | |
| override fun valueOrThrow(exp: Throwable): Nothing = throw exp | |
| } |