diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertLambdaToReferenceIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertLambdaToReferenceIntention.kt index ec5d831d608..f738c44a57f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertLambdaToReferenceIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertLambdaToReferenceIntention.kt @@ -87,6 +87,8 @@ class ConvertLambdaToReferenceIntention : SelfTargetingOffsetIndependentIntentio if (calleeDescriptor.typeParameters.isNotEmpty()) return false // No references to Java synthetic properties if (calleeDescriptor is SyntheticJavaPropertyDescriptor) return false + // No suspend functions + if ((calleeDescriptor as? FunctionDescriptor)?.isSuspend ?: false) return false val descriptorHasReceiver = with(calleeDescriptor) { // No references to both member / extension if (dispatchReceiverParameter != null && extensionReceiverParameter != null) return false diff --git a/idea/testData/intentions/convertLambdaToReference/suspendFun.kt b/idea/testData/intentions/convertLambdaToReference/suspendFun.kt new file mode 100644 index 00000000000..f5a1c639ce9 --- /dev/null +++ b/idea/testData/intentions/convertLambdaToReference/suspendFun.kt @@ -0,0 +1,10 @@ +// IS_APPLICABLE: false +// WITH_RUNTIME + +suspend fun String.bar() { + +} + +suspend fun x() { + listOf("Jack", "Tom").forEach { it.bar() } +} diff --git a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java index c0d40c1c0e4..0d48aa18e32 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -4463,6 +4463,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest { doTest(fileName); } + @TestMetadata("suspendFun.kt") + public void testSuspendFun() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertLambdaToReference/suspendFun.kt"); + doTest(fileName); + } + @TestMetadata("syntheticProperty.kt") public void testSyntheticProperty() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertLambdaToReference/syntheticProperty.kt");