浏览代码

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.
[pʲɵs] 5 年之前
父节点
当前提交
c22e2e8159
共有 1 个文件被更改,包括 3 次插入1 次删除
  1. 3 1
      app/src/main/java/eu/kanade/tachiyomi/ui/base/presenter/NucleusConductorDelegate.kt

+ 3 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/base/presenter/NucleusConductorDelegate.kt

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