확장 리시버가 null 가능이 아니라는 사실을 고려하지 않는 비 null 가능 확장 리시버를 포함하는 인라인 함수를 보고합니다.

Kotlin 1.2보다 오래된 버전에서는 유연한 null 가능 확장 리시버(알 수 없는 null 가능성이 있는 플랫폼 타입)를 포함하는 inline fun 호출이 바이트코드에서 null 값 가능성 검사를 포함하지 않았습니다. Kotlin 1.2 버전부터는 null 값 가능성 검사가 바이트코드에 포함됩니다(KT-12899 참조).

따라서 확장 리시버가 null 가능이 아니라는 사실을 사용하지 않는 함수는 Kotlin 1.2 이하 버전에서 사용하기 위험하며 그러한 함수가 null 가능 리시버를 가지도록 만드는 것이 좋습니다.

예:


  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보다 낮을 경우에만 보고합니다.