Ошибка вывода Kotlin и RxJava

Я пытаюсь реализовать retryWhen на моем Observable, когда происходит тайм-аут, но у меня есть странные ошибки, подчеркнутые в IDE Android Studio 3.0

Вот код:

rxRssiRepository.onRssiUpdate() //returns Observable<RssiEvent> .timeout(10, TimeUnit.MILLISECONDS) .retryWhen { t: Observable<Throwable> -> t.flatMap { error: Throwable -> if (error is TimeoutException) { stopLocationUpdates() Log.v("TIMEOUT", "TIMEOUT RSSI EVENTS") Observable.just(Observable.empty()) } else { Observable.error(error) } } } .concatMap { t: RssiEvent -> appendRssiEvent(t) } .publish() 

IDE подчеркивает красный оператор .flatMap и говорит:

Ошибка вывода типа: недостаточно информации для вывода параметра R в

fun flatMap (mapper: ((t: Throwable) → ObservableSource)!): Наблюдаемый! Просьба указать его явно.

То же самое для оператора «if»:

Ошибка вывода типа для выражения потока управления. Пожалуйста, укажите его тип явно

Для оператора .just:

Ошибка ввода типа: недостаточно информации для вывода параметра T в удовольствие просто (item: T!): Наблюдаемый! Просьба указать его явно.

Для оператора пустым:

Ошибка вывода типа: недостаточно информации для вывода параметра T в

просто забава (item: T!): Наблюдаемый! Просьба указать его явно.

И для оператора .error:

Ошибка вывода типа: недостаточно информации для вывода параметра T в

забавная ошибка (исключение: Throwable!): Наблюдаемый! Просьба указать его явно.

Как это исправить?

Я имею в виду, что этот код также был здесь на Java: как добавить тайм-аут, чтобы обнаружить, что Observable не издавал какое-то время

Но когда я конвертирую его в котлин, это дает мне описанную ситуацию

    Компилятор не может понять, какой тип вы хотите вернуть.

    Самое простое исправление в вашем случае – добавить тип возвращаемого типа. Что-то вроде этого Observable.just(Observable.empty<Any>()) . Теперь компилятор сможет выяснить, какой тип будет возвращен.