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