유연하게 null 가능한(알 수 없는 null 값 가능성이 있는 플랫폼 타입) 확장 리시버가 있는 인라인 함수의 안전하지 않을 수 있는 호출을 보고합니다.

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

예외가 던져지도록 하려면 명시적 !!를 추가하거나 예외가 없어도 작동하는 경우 함수의 리시버 타입을 null 가능으로 변경하는 것이 좋습니다.

예:


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