非 nullable の拡張レシーバーを持つインライン関数で、拡張レシーバーが nullable でない事実を考慮していないものを報告します。

Kotlin 1.2 以前は、バイトコードでの柔軟な nullable 拡張レシーバー (null 許容性が不明なプラットフォーム型) を持つ inline fun の呼び出しに null 許容性チェックが含まれていませんでした。 Kotlin 1.2 以降は、null 許容性チェックがバイトコードに含まれるようになりました (KT-12899 を参照してください)。

したがって、Kotlin 1.2 までのバージョンでは拡張レシーバーが nullable でない事実を考慮しない関数は危険とされており、そのような関数には nullable レシーバーを持たせることが推奨されています。

例:


  inline fun String.greet() {
      println("Hello, $this!")
  }

  fun main() {
      // `System.getProperty` は表示できない `String!` 型を返します
      val user = System.getProperty("user.name")
      user.greet()
  }

クイックフィックス適用後:


  inline fun String.greet() {
      println("Hello, $this!")
  }

  fun main() {
      // `System.getProperty` は表示できない `String!` 型を返します
      val user = System.getProperty("user.name")
      user.greet()
  }

このインスペクションは、プロジェクトまたはモジュールの Kotlin 言語レベルが 1.2 未満の場合にのみ報告します。