表达式主体中的 Kotlin null 和 kotlin.Unit 混淆

ghm*_*lti 5 generics kotlin

谁能解释以下代码片段的结果?为什么第一个函数调用返回 kotlin.Unit?

kotlin 版本 1.5.21,java11

fun <T> testMethod(data: String?): T? = data?.let { return null }
println(testMethod<String>(null))  // --> kotlin.Unit

fun <T> testMethod2(data: String?): T? = data?.let { null }
println(testMethod2<String>(null)) // --> null
Run Code Online (Sandbox Code Playgroud)

为什么 kotlin 1.4.30 中的结果不同 - https://pl.kotl.in/uFZDE3O9e

ghm*_*lti 1

这是一个编译器问题,已在此处报告 - https://youtrack.jetbrains.com/issue/KT-47527,已在 1.6.0-dev-970 中修复。

参考: https: //github.com/jetbrains/kotlin/commit/ae608ea67fc589c4472657dc0317e97cb67dd158