From cab80812ef40728ffbdab870e7458f6b7eab233f Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Tue, 14 Mar 2017 18:34:40 +0300 Subject: [PATCH] KT-13111: lambda --> reference supports also object members --- .../intentions/ConvertLambdaToReferenceIntention.kt | 11 ----------- .../intentions/convertLambdaToReference/object.kt | 2 +- .../convertLambdaToReference/object.kt.after | 7 +++++++ 3 files changed, 8 insertions(+), 12 deletions(-) create mode 100644 idea/testData/intentions/convertLambdaToReference/object.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertLambdaToReferenceIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertLambdaToReferenceIntention.kt index 8d79a9739f9..801901c7241 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertLambdaToReferenceIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertLambdaToReferenceIntention.kt @@ -22,9 +22,7 @@ import org.jetbrains.kotlin.builtins.isExtensionFunctionType import org.jetbrains.kotlin.builtins.isFunctionType import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.idea.caches.resolve.analyze -import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade import org.jetbrains.kotlin.idea.core.ShortenReferences -import org.jetbrains.kotlin.idea.core.isVisible import org.jetbrains.kotlin.idea.imports.importableFqName import org.jetbrains.kotlin.idea.inspections.IntentionBasedInspection import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers @@ -109,15 +107,6 @@ class ConvertLambdaToReferenceIntention : SelfTargetingOffsetIndependentIntentio // No exotic receiver types if (receiverType.isTypeParameter() || receiverType.isError || receiverType.isDynamic() || !receiverType.constructor.isDenotable || receiverType.isFunctionType) return false - val receiverDeclarationDescriptor = receiverType.constructor.declarationDescriptor - if (receiverDeclarationDescriptor is ClassDescriptor) { - // No references to object members - if (receiverDeclarationDescriptor.kind == ClassKind.OBJECT) return false - // No invisible receiver types - if (!receiverDeclarationDescriptor.isVisible( - explicitReceiver, null, context, explicitReceiver.getResolutionFacade() - )) return false - } } // Same lambda / references function parameter order diff --git a/idea/testData/intentions/convertLambdaToReference/object.kt b/idea/testData/intentions/convertLambdaToReference/object.kt index 565134be492..0977ced5a66 100644 --- a/idea/testData/intentions/convertLambdaToReference/object.kt +++ b/idea/testData/intentions/convertLambdaToReference/object.kt @@ -1,4 +1,4 @@ -// IS_APPLICABLE: false +// IS_APPLICABLE: true object Object { fun foo() = 42 diff --git a/idea/testData/intentions/convertLambdaToReference/object.kt.after b/idea/testData/intentions/convertLambdaToReference/object.kt.after new file mode 100644 index 00000000000..f8decf9454d --- /dev/null +++ b/idea/testData/intentions/convertLambdaToReference/object.kt.after @@ -0,0 +1,7 @@ +// IS_APPLICABLE: true + +object Object { + fun foo() = 42 +} + +val x = Object::foo \ No newline at end of file