柔軟な nullable (null 許容性が不明なプラットフォーム型) 拡張レシーバーを持つインライン関数の安全でない可能性がある呼び出しを報告します。
Kotlin 1.2 以前は、バイトコードでの柔軟な nullable 拡張レシーバー (null 許容性が不明なプラットフォーム型) を持つ inline fun の呼び出しに null 許容性チェックが含まれていませんでした。 Kotlin 1.2 以降は、null 許容性チェックがバイトコードに含まれるようになりました (KT-12899 を参照してください)。
例外をスローする必要があれば、明示的に「!!」を追加することが推奨されています。また、例外が発生せずに動作すると思われる場合は、関数のレシーバーの型を nullable に変更することを検討してください。
例:
inline fun String.removePrefix(prefix: String): String {
return this.substring(prefix.length)
}
fun main() {
// `System.getProperty` は表示できない `String!` 型を返します
val property = System.getProperty("user.dir")
println(property.removePrefix("/home"))
}
クイックフィックス適用後:
inline fun String.removePrefix(prefix: String): String {
return this.substring(prefix.length)
}
fun main() {
// `System.getProperty` は表示できない `String!` 型を返します
val property = System.getProperty("user.dir")
println(property!!.removePrefix("/home"))
}
このインスペクションは、プロジェクトまたはモジュールの Kotlin 言語レベルが 1.2 未満の場合にのみ報告します。