iex
01/27/2020, 1:21 PMfun foo(): Observable<Result<String, String>> =
Observable.just(Success(""))
.onErrorResumeNext { t: Throwable -> Failure("") } // Type mismatch: inferred type is Observable<Result.Success<String>!>! but Observable<Result<String, String>> was expected
// where:
sealed class Result<out T, out E> {
data class Success<out T>(val success: T) : Result<T, Nothing>()
data class Failure<out E>(val error: E) : Result<Nothing, E>()
}diesieben07
01/27/2020, 1:25 PMObservable.just(Success("")) is inferred to be of type Observable<Result.Success<String>>. Your onErrorResumeNext then tries to put a Result.Failure<String> into that, which is not compatible.diesieben07
01/27/2020, 1:26 PMjust or create factory methods for Success and Failure which return Result<T, E> instead of Result.Success / Result.Failureiex
01/27/2020, 1:30 PMfun foo(): Observable<Result<String, String>> =
Observable.just<Result<String, String>>(Success(""))
.onErrorResumeNext { t: Throwable -> Failure("") }
I get a new error on Failure("")
Expected type mismatch: inferred type is Result.Failure<String> but ObservableSource<out Result<String, String>!>! was expected
🤔iex
01/27/2020, 1:30 PMResult<String, String>?diesieben07
01/27/2020, 1:31 PMonErrorResumeNext expects an observable again, not a plain valuediesieben07
01/27/2020, 1:32 PMonErrorReturn insteaddiesieben07
01/27/2020, 1:32 PMiex
01/27/2020, 1:33 PM