From 450d0dd5d1dd13f4387097553013419bfad00d15 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Sun, 28 Aug 2016 22:50:00 +0300 Subject: [PATCH] Supported access to companion object members --- .../usagesSearch/destructuringDeclarationUsages.kt | 6 ++++++ .../components/companionObjectAccess.0.kt | 14 ++++++++++++++ .../components/companionObjectAccess.log | 4 ++++ .../components/companionObjectAccess.results.txt | 1 + .../kotlin/findUsages/FindUsagesTestGenerated.java | 6 ++++++ 5 files changed, 31 insertions(+) create mode 100644 idea/testData/findUsages/kotlin/conventions/components/companionObjectAccess.0.kt create mode 100644 idea/testData/findUsages/kotlin/conventions/components/companionObjectAccess.log create mode 100644 idea/testData/findUsages/kotlin/conventions/components/companionObjectAccess.results.txt diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/usagesSearch/destructuringDeclarationUsages.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/usagesSearch/destructuringDeclarationUsages.kt index e9891488baf..7a649fb4c73 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/usagesSearch/destructuringDeclarationUsages.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/usagesSearch/destructuringDeclarationUsages.kt @@ -377,6 +377,12 @@ private class Processor( return true // this@ClassName - it will be handled anyway because members and extensions are processed with plain search } } + + is KtQualifiedExpression -> { + if (element == parent.receiverExpression) { + return true // companion object member or static member access - ignore it + } + } } if (element.getStrictParentOfType() != null) return true // ignore usage in import diff --git a/idea/testData/findUsages/kotlin/conventions/components/companionObjectAccess.0.kt b/idea/testData/findUsages/kotlin/conventions/components/companionObjectAccess.0.kt new file mode 100644 index 00000000000..d4747ce8919 --- /dev/null +++ b/idea/testData/findUsages/kotlin/conventions/components/companionObjectAccess.0.kt @@ -0,0 +1,14 @@ +// PSI_ELEMENT: org.jetbrains.kotlin.psi.KtParameter +// OPTIONS: usages + +data class A(val x: Int, val y: Int) { + companion object { + fun b(): B = B() + } +} + +data class B(val x: Int, val y: Int) + +fun foo() { + val (x, y) = A.b() +} \ No newline at end of file diff --git a/idea/testData/findUsages/kotlin/conventions/components/companionObjectAccess.log b/idea/testData/findUsages/kotlin/conventions/components/companionObjectAccess.log new file mode 100644 index 00000000000..c5632abaab8 --- /dev/null +++ b/idea/testData/findUsages/kotlin/conventions/components/companionObjectAccess.log @@ -0,0 +1,4 @@ +Searched inheritors of A +Searched references to A +Used plain search in LocalSearchScope: + CLASS:A diff --git a/idea/testData/findUsages/kotlin/conventions/components/companionObjectAccess.results.txt b/idea/testData/findUsages/kotlin/conventions/components/companionObjectAccess.results.txt new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/idea/testData/findUsages/kotlin/conventions/components/companionObjectAccess.results.txt @@ -0,0 +1 @@ + diff --git a/idea/tests/org/jetbrains/kotlin/findUsages/FindUsagesTestGenerated.java b/idea/tests/org/jetbrains/kotlin/findUsages/FindUsagesTestGenerated.java index 00f6837bb00..9a82e957ffa 100644 --- a/idea/tests/org/jetbrains/kotlin/findUsages/FindUsagesTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/findUsages/FindUsagesTestGenerated.java @@ -170,6 +170,12 @@ public class FindUsagesTestGenerated extends AbstractFindUsagesTest { KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/findUsages/kotlin/conventions/components"), Pattern.compile("^(.+)\\.0\\.kt$"), true); } + @TestMetadata("companionObjectAccess.0.kt") + public void testCompanionObjectAccess() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/findUsages/kotlin/conventions/components/companionObjectAccess.0.kt"); + doTest(fileName); + } + @TestMetadata("componentFunForGenericType1.0.kt") public void testComponentFunForGenericType1() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/findUsages/kotlin/conventions/components/componentFunForGenericType1.0.kt");