// WITH_RUNTIME // IGNORE_BACKEND: JVM // IGNORE_LIGHT_ANALYSIS fun foo(a: Result?): T? = bar(a, object : IFace, T> { override fun call(ic: Result?): T? = ic?.getOrThrow() }) interface IFace { fun call(ic: T?): R? } fun bar(value: T?, f: IFace): R? { return f.call(value) } fun box(): String { var res = foo(Result.success(40))?.plus(2) if (res != 42) return "FAIL $res" res = foo(null) if (res != null) return "FAIL $res" return "OK" }