K2: don't accept reflective function kinds as possible lambda type
#KT-56954 Fixed
This commit is contained in:
committed by
Space Team
parent
7a6ff5de34
commit
af78ef77b4
+1
-1
@@ -2,7 +2,7 @@ FILE: lambdaForKfunction.kt
|
||||
public final fun foo(arg: R|kotlin/reflect/KFunction0<kotlin/Unit>|): R|kotlin/Unit| {
|
||||
}
|
||||
public final fun main(): R|kotlin/Unit| {
|
||||
R|/foo|(fun <anonymous>(): R|kotlin/Unit| <inline=NoInline> {
|
||||
R|/foo<Inapplicable(INAPPLICABLE): /foo>#|(fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
+1
-1
@@ -5,5 +5,5 @@ import kotlin.reflect.KFunction0
|
||||
fun foo(arg: KFunction0<Unit>) {}
|
||||
|
||||
fun main() {
|
||||
foo(fun() {}) // K1: TYPE_MISMATCH, K2: ok in compile-time & CCE at run-time
|
||||
foo(<!ARGUMENT_TYPE_MISMATCH!>fun() {}<!>) // K1: TYPE_MISMATCH, K2: ok in compile-time & CCE at run-time
|
||||
}
|
||||
|
||||
+1
-1
@@ -64,7 +64,7 @@ fun Candidate.preprocessLambdaArgument(
|
||||
if (expectedType != null) {
|
||||
val parameters = resolvedArgument.parameters
|
||||
val functionTypeKind = context.session.functionTypeService.extractSingleSpecialKindForFunction(anonymousFunction.symbol)
|
||||
?: resolvedArgument.expectedFunctionTypeKind
|
||||
?: resolvedArgument.expectedFunctionTypeKind?.nonReflectKind()
|
||||
?: FunctionTypeKind.Function
|
||||
val lambdaType = createFunctionType(
|
||||
functionTypeKind,
|
||||
|
||||
Reference in New Issue
Block a user