Do not suppress a type system error (#2524)

This code was sort of fine when it used raw Java types, but the Kotlin
equivalent technically calls a method that takes a Nothing-typed
argument with a value that is not of type Nothing. Whether that works
depends on how lenient kotlinc is about inserting casts in bytecode.

The solution is to give the unknown type represented by a star an
explicit name by capturing it in a type variable, then cast to that type
instead of Nothing. This is guaranteed to be an unchecked, but valid,
cast.
This commit is contained in:
[pʲɵs] 2020-01-21 00:34:59 +01:00 committed by arkon
parent ee8a53188c
commit c22e2e8159

View file

@ -29,7 +29,9 @@ class NucleusConductorDelegate<P : Presenter<*>>(private val factory: PresenterF
bundle = presenterState bundle = presenterState
} }
@Suppress("TYPE_MISMATCH") @Suppress("UNCHECKED_CAST")
private fun <View> Presenter<View>.takeView(view: Any) = takeView(view as View)
fun onTakeView(view: Any) { fun onTakeView(view: Any) {
presenter?.takeView(view) presenter?.takeView(view)
} }