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 bar(x: Int = 42): String = ""
|
||||||
|
|
||||||
fun test() {
|
fun test() {
|
||||||
val result = foo(<!UNSUPPORTED_FEATURE!>::bar<!>)
|
val result = foo(::bar)
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>result<!>
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>result<!>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -20,7 +20,7 @@ fun test(
|
|||||||
foo2(<!UNSUPPORTED_FEATURE!>f2<!>)
|
foo2(<!UNSUPPORTED_FEATURE!>f2<!>)
|
||||||
foo3(<!UNSUPPORTED_FEATURE!>f3<!>)
|
foo3(<!UNSUPPORTED_FEATURE!>f3<!>)
|
||||||
|
|
||||||
foo1(<!UNSUPPORTED_FEATURE!>::bar<!>)
|
foo1(::bar)
|
||||||
|
|
||||||
foo1(<!TYPE_MISMATCH, UNSUPPORTED_FEATURE!>f2<!>)
|
foo1(<!TYPE_MISMATCH, UNSUPPORTED_FEATURE!>f2<!>)
|
||||||
foo1(<!TYPE_MISMATCH, UNSUPPORTED_FEATURE!>f3<!>)
|
foo1(<!TYPE_MISMATCH, UNSUPPORTED_FEATURE!>f3<!>)
|
||||||
|
|||||||
Reference in New Issue
Block a user