From d3f04c631052b6afa166cdd7f8cda5d88ff06fa2 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Fri, 6 Nov 2015 20:04:17 +0300 Subject: [PATCH] Fixed for companion object members --- .../kotlin/idea/intentions/ImportMemberIntention.kt | 6 +----- .../intentions/importMember/FromCompanionObject.kt | 9 +++++++++ .../importMember/FromCompanionObject.kt.after | 10 ++++++++++ .../kotlin/idea/intentions/IntentionTestGenerated.java | 6 ++++++ 4 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 idea/testData/intentions/importMember/FromCompanionObject.kt create mode 100644 idea/testData/intentions/importMember/FromCompanionObject.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ImportMemberIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ImportMemberIntention.kt index 465ea86d5ec..a6c4d2e09c2 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ImportMemberIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ImportMemberIntention.kt @@ -57,11 +57,7 @@ class ImportMemberIntention : SelfTargetingOffsetIndependentIntention { qualifiedExpression -> val selector = qualifiedExpression.getQualifiedElementSelector() as? KtNameReferenceExpression ?: return@collectDescendantsOfType false - val qualifierName = qualifiedExpression.receiverExpression.getQualifiedElementSelector() as? KtNameReferenceExpression - ?: return@collectDescendantsOfType false - selector.getReferencedNameAsName() == fqName.shortName() - && qualifierName.getReferencedNameAsName() == fqName.parent().shortName() - && targetFqName(qualifiedExpression) == fqName + selector.getReferencedNameAsName() == fqName.shortName() && targetFqName(qualifiedExpression) == fqName } //TODO: not deep diff --git a/idea/testData/intentions/importMember/FromCompanionObject.kt b/idea/testData/intentions/importMember/FromCompanionObject.kt new file mode 100644 index 00000000000..f049ebcfffb --- /dev/null +++ b/idea/testData/intentions/importMember/FromCompanionObject.kt @@ -0,0 +1,9 @@ +// INTENTION_TEXT: "Add import for 'kotlin.text.Regex.Companion.escape'" +// WITH_RUNTIME + +import kotlin.text.Regex + +fun foo() { + Regex.escape("") + Regex.Companion.escape("") +} \ No newline at end of file diff --git a/idea/testData/intentions/importMember/FromCompanionObject.kt.after b/idea/testData/intentions/importMember/FromCompanionObject.kt.after new file mode 100644 index 00000000000..8d4e3ce01fd --- /dev/null +++ b/idea/testData/intentions/importMember/FromCompanionObject.kt.after @@ -0,0 +1,10 @@ +// INTENTION_TEXT: "Add import for 'kotlin.text.Regex.Companion.escape'" +// WITH_RUNTIME + +import kotlin.text.Regex +import kotlin.text.Regex.Companion.escape + +fun foo() { + escape("") + escape("") +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java index 9b6d1909121..6167d831e90 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -5112,6 +5112,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest { doTest(fileName); } + @TestMetadata("FromCompanionObject.kt") + public void testFromCompanionObject() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/importMember/FromCompanionObject.kt"); + doTest(fileName); + } + @TestMetadata("NoTarget.kt") public void testNoTarget() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/importMember/NoTarget.kt");