オーバーロードされた関数の呼び出しで、引数を明示的にキャストして適切な宣言に解決する必要があるものを報告します。 現在のコンパイラー警告 (Kotlin 1.6.20 から提供) は、Kotlin 1.8 ではエラーになります。
等差数列と範囲型 (kotlin.ranges) は、Kotlin 1.9 以降では Collection インターフェースの実装を開始します。 この更新により、オーバーロードされた関数の解決に変更が生じます。 たとえば、以下の例では test(1..5) の呼び出しは Kotlin 1.8 以前では test(t: Any) に、Kotlin 1.9 以降では test(t: Collection<*>) に解決されます。
fun test(t: Any) { }
fun test(t: Collection<*>) { }
fun invoke() {
test(1..5) // 1.9 では IntRange はコレクションになります
}
提供されるクイックフィックスは、バージョン 1.8 以前のコンパイラー固有の動作を捕捉します。
fun test(t: Any) { }
fun test(t: Collection<*>) { }
fun invoke() {
test(1..5) // Kotlin 1.9 より前では 'test(t: T)' に解決されます
}
クイックフィックス適用後:
fun test(t: Any) { }
fun test(t: Collection<*>) { }
fun invoke() {
test((1..5) as Iterable<Int>) // Kotlin 1.9 では 'test(t: T)' に解決されます
}
このインスペクションは Kotlin の言語レベルが 1.6 以降の場合に使用できます。