Allow suspend-conversion for callable references as part of adaptation
This commit is contained in:
-20
@@ -35,25 +35,5 @@ object SuspendConversionCallChecker : CallChecker {
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
for ((parameter, argument) in resolvedCall.argumentMappingByOriginal) {
|
||||
if (!parameter.type.isSuspendFunctionType) continue
|
||||
if (argument !is ResolvedCallArgument.SimpleArgument) continue
|
||||
|
||||
val callArgument = argument.callArgument
|
||||
if (callArgument !is CallableReferenceKotlinCallArgument) continue
|
||||
|
||||
val callableReferenceExpression = callArgument.psiExpression as? KtCallableReferenceExpression ?: continue
|
||||
val argumentCall = callableReferenceExpression.callableReference.getResolvedCall(context.trace.bindingContext) ?: continue
|
||||
val target = argumentCall.resultingDescriptor as? FunctionDescriptor ?: continue
|
||||
if (!target.isSuspend) {
|
||||
context.trace.report(
|
||||
Errors.UNSUPPORTED_FEATURE.on(
|
||||
callableReferenceExpression,
|
||||
LanguageFeature.SuspendConversion to context.languageVersionSettings
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -10,7 +10,7 @@ object Test1 {
|
||||
fun bar(x: Int = 42): String = ""
|
||||
|
||||
fun test() {
|
||||
val result = foo(<!UNSUPPORTED_FEATURE!>::bar<!>)
|
||||
val result = foo(::bar)
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>result<!>
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ fun test(
|
||||
foo2(<!UNSUPPORTED_FEATURE!>f2<!>)
|
||||
foo3(<!UNSUPPORTED_FEATURE!>f3<!>)
|
||||
|
||||
foo1(<!UNSUPPORTED_FEATURE!>::bar<!>)
|
||||
foo1(::bar)
|
||||
|
||||
foo1(<!TYPE_MISMATCH, UNSUPPORTED_FEATURE!>f2<!>)
|
||||
foo1(<!TYPE_MISMATCH, UNSUPPORTED_FEATURE!>f3<!>)
|
||||
|
||||
Reference in New Issue
Block a user