// IGNORE_LIGHT_ANALYSIS // IGNORE_BACKEND: JVM // WITH_STDLIB // MODULE: lib // FILE: lib.kt public class WhateverUseCase : UseCaseWithParameter, Int> { override operator fun invoke(param: Result): Result { return param.onFailure { return if (it is NumberFormatException) Result.success(0) else Result.failure(it) } } } interface UseCaseWithParameter { operator fun invoke(param: P) : Result } // MODULE: main(lib) // FILE: main.kt fun box(): String { val useCase = WhateverUseCase() return if (useCase(Result.failure(NumberFormatException())) == Result.success(0)) "OK" else "Fail" }