확장 리시버가 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보다 낮을 경우에만 보고합니다.