1
Kotlinによって生成された不要なnullチェックをカバーする方法
次の最小限のKotlinの例を検討してください。 fun <U> someWrapper(supplier: () -> U): () -> (U) { return { supplier() } } fun foo(taskExecutor: TaskExecutor): Int { val future = CompletableFuture.supplyAsync(someWrapper { 42 }, taskExecutor::execute) return future.join() } @Test public void shouldFoo() { assertThat(foo(), is(42)); } Jacocoにはブランチカバレッジルールがありますが、上記のコードでは失敗し、2つのブランチのうちの1つはsomeWrapper呼び出しの行でカバーされていません。残念ながら、それsomeWrapperが呼び出されるすべてのクラスを除外することは私にとってオプションではありません。 逆コンパイルされたJavaコードを見る: public final int foo(TaskExecutor taskExecutor) { Object var10000 …