From 882dbec1fb84c974f23654af17d74a7bce8203a4 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 29 Apr 2024 19:55:45 +0200 Subject: [PATCH] [kotlin] find usages: process references from enum entries to enum primary constructor ^KTIJ-29756 fixed GitOrigin-RevId: 800ff40cdb031c3229bd7a1152d6913c3b3a26dd --- ...sWithCompilerReferenceIndexFirTestGenerated.java | 13 +++++++++++++ ...agesWithCompilerReferenceIndexTestGenerated.java | 13 +++++++++++++ .../fir/findUsages/FindUsagesFirTestGenerated.java | 5 +++++ .../kotlin/findUsages/FindUsagesTestGenerated.java | 5 +++++ .../findClassUsages/primaryConstructorOfEnum.0.kt | 7 +++++++ .../primaryConstructorOfEnum.results.txt | 1 + .../usages/handlers/KotlinFindClassUsagesHandler.kt | 5 ++++- 7 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 plugins/kotlin/idea/tests/testData/findUsages/kotlin/findClassUsages/primaryConstructorOfEnum.0.kt create mode 100644 plugins/kotlin/idea/tests/testData/findUsages/kotlin/findClassUsages/primaryConstructorOfEnum.results.txt diff --git a/plugins/kotlin/compiler-reference-index/tests.k2/test/org/jetbrains/kotlin/idea/fir/search/refIndex/FindUsagesWithCompilerReferenceIndexFirTestGenerated.java b/plugins/kotlin/compiler-reference-index/tests.k2/test/org/jetbrains/kotlin/idea/fir/search/refIndex/FindUsagesWithCompilerReferenceIndexFirTestGenerated.java index 4882c9a21630..4eaf9ab3f8fb 100644 --- a/plugins/kotlin/compiler-reference-index/tests.k2/test/org/jetbrains/kotlin/idea/fir/search/refIndex/FindUsagesWithCompilerReferenceIndexFirTestGenerated.java +++ b/plugins/kotlin/compiler-reference-index/tests.k2/test/org/jetbrains/kotlin/idea/fir/search/refIndex/FindUsagesWithCompilerReferenceIndexFirTestGenerated.java @@ -1457,6 +1457,19 @@ public abstract class FindUsagesWithCompilerReferenceIndexFirTestGenerated exten } } + @RunWith(JUnit3RunnerWithInners.class) + @TestMetadata("../../idea/tests/testData/findUsages/kotlin/findClassUsages") + public static class TestPrimaryConstructorOfEnum extends AbstractFindUsagesWithCompilerReferenceIndexFirTest { + private void runTest(String testDataFilePath) throws Exception { + KotlinTestUtils.runTest(this::doTest, this, testDataFilePath); + } + + @TestMetadata("primaryConstructorOfEnum.0.kt") + public void testPrimaryConstructorOfEnum() throws Exception { + runTest("../../idea/tests/testData/findUsages/kotlin/findClassUsages/primaryConstructorOfEnum.0.kt"); + } + } + @RunWith(JUnit3RunnerWithInners.class) @TestMetadata("../../idea/tests/testData/findUsages/kotlin/findClassUsages") public static class TestPrimaryConstructorWithDefaultParams extends AbstractFindUsagesWithCompilerReferenceIndexFirTest { diff --git a/plugins/kotlin/compiler-reference-index/tests/test/org/jetbrains/kotlin/idea/search/refIndex/FindUsagesWithCompilerReferenceIndexTestGenerated.java b/plugins/kotlin/compiler-reference-index/tests/test/org/jetbrains/kotlin/idea/search/refIndex/FindUsagesWithCompilerReferenceIndexTestGenerated.java index da2e3ac98e03..61464c096991 100644 --- a/plugins/kotlin/compiler-reference-index/tests/test/org/jetbrains/kotlin/idea/search/refIndex/FindUsagesWithCompilerReferenceIndexTestGenerated.java +++ b/plugins/kotlin/compiler-reference-index/tests/test/org/jetbrains/kotlin/idea/search/refIndex/FindUsagesWithCompilerReferenceIndexTestGenerated.java @@ -1457,6 +1457,19 @@ public abstract class FindUsagesWithCompilerReferenceIndexTestGenerated extends } } + @RunWith(JUnit3RunnerWithInners.class) + @TestMetadata("../../idea/tests/testData/findUsages/kotlin/findClassUsages") + public static class TestPrimaryConstructorOfEnum extends AbstractFindUsagesWithCompilerReferenceIndexTest { + private void runTest(String testDataFilePath) throws Exception { + KotlinTestUtils.runTest(this::doTest, this, testDataFilePath); + } + + @TestMetadata("primaryConstructorOfEnum.0.kt") + public void testPrimaryConstructorOfEnum() throws Exception { + runTest("../../idea/tests/testData/findUsages/kotlin/findClassUsages/primaryConstructorOfEnum.0.kt"); + } + } + @RunWith(JUnit3RunnerWithInners.class) @TestMetadata("../../idea/tests/testData/findUsages/kotlin/findClassUsages") public static class TestPrimaryConstructorWithDefaultParams extends AbstractFindUsagesWithCompilerReferenceIndexTest { diff --git a/plugins/kotlin/fir/tests/test/org/jetbrains/kotlin/idea/fir/findUsages/FindUsagesFirTestGenerated.java b/plugins/kotlin/fir/tests/test/org/jetbrains/kotlin/idea/fir/findUsages/FindUsagesFirTestGenerated.java index 649abe9fd3e7..63da0b8eebb9 100644 --- a/plugins/kotlin/fir/tests/test/org/jetbrains/kotlin/idea/fir/findUsages/FindUsagesFirTestGenerated.java +++ b/plugins/kotlin/fir/tests/test/org/jetbrains/kotlin/idea/fir/findUsages/FindUsagesFirTestGenerated.java @@ -609,6 +609,11 @@ public abstract class FindUsagesFirTestGenerated extends AbstractFindUsagesFirTe runTest("../../idea/tests/testData/findUsages/kotlin/findClassUsages/localAndNonLocalClass.0.kt"); } + @TestMetadata("primaryConstructorOfEnum.0.kt") + public void testPrimaryConstructorOfEnum() throws Exception { + runTest("../../idea/tests/testData/findUsages/kotlin/findClassUsages/primaryConstructorOfEnum.0.kt"); + } + @TestMetadata("primaryConstructorWithDefaultParams.0.kt") public void testPrimaryConstructorWithDefaultParams() throws Exception { runTest("../../idea/tests/testData/findUsages/kotlin/findClassUsages/primaryConstructorWithDefaultParams.0.kt"); diff --git a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/findUsages/FindUsagesTestGenerated.java b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/findUsages/FindUsagesTestGenerated.java index 0fdbcc177421..49fbe8127bc8 100644 --- a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/findUsages/FindUsagesTestGenerated.java +++ b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/findUsages/FindUsagesTestGenerated.java @@ -609,6 +609,11 @@ public abstract class FindUsagesTestGenerated extends AbstractFindUsagesTest { runTest("testData/findUsages/kotlin/findClassUsages/localAndNonLocalClass.0.kt"); } + @TestMetadata("primaryConstructorOfEnum.0.kt") + public void testPrimaryConstructorOfEnum() throws Exception { + runTest("testData/findUsages/kotlin/findClassUsages/primaryConstructorOfEnum.0.kt"); + } + @TestMetadata("primaryConstructorWithDefaultParams.0.kt") public void testPrimaryConstructorWithDefaultParams() throws Exception { runTest("testData/findUsages/kotlin/findClassUsages/primaryConstructorWithDefaultParams.0.kt"); diff --git a/plugins/kotlin/idea/tests/testData/findUsages/kotlin/findClassUsages/primaryConstructorOfEnum.0.kt b/plugins/kotlin/idea/tests/testData/findUsages/kotlin/findClassUsages/primaryConstructorOfEnum.0.kt new file mode 100644 index 000000000000..21632b6ce39f --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/findUsages/kotlin/findClassUsages/primaryConstructorOfEnum.0.kt @@ -0,0 +1,7 @@ +// PSI_ELEMENT: org.jetbrains.kotlin.psi.KtClass +// OPTIONS: usages, constructorUsages +// PSI_ELEMENT_AS_TITLE: "class E" +enum class E(b: Boolean) { + A(false), + B(true) +} \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/findUsages/kotlin/findClassUsages/primaryConstructorOfEnum.results.txt b/plugins/kotlin/idea/tests/testData/findUsages/kotlin/findClassUsages/primaryConstructorOfEnum.results.txt new file mode 100644 index 000000000000..8b137891791f --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/findUsages/kotlin/findClassUsages/primaryConstructorOfEnum.results.txt @@ -0,0 +1 @@ + diff --git a/plugins/kotlin/kotlin.searching/base/src/org/jetbrains/kotlin/idea/base/searching/usages/handlers/KotlinFindClassUsagesHandler.kt b/plugins/kotlin/kotlin.searching/base/src/org/jetbrains/kotlin/idea/base/searching/usages/handlers/KotlinFindClassUsagesHandler.kt index d9eb72e86514..5307f988a3c9 100644 --- a/plugins/kotlin/kotlin.searching/base/src/org/jetbrains/kotlin/idea/base/searching/usages/handlers/KotlinFindClassUsagesHandler.kt +++ b/plugins/kotlin/kotlin.searching/base/src/org/jetbrains/kotlin/idea/base/searching/usages/handlers/KotlinFindClassUsagesHandler.kt @@ -87,7 +87,10 @@ class KotlinFindClassUsagesHandler( addTask { ReferencesSearch.search(constructor, options.searchScope).forEach(referenceProcessor) } addTask( constructor.buildProcessDelegationCallKotlinConstructorUsagesTask(options.searchScope) { callElement -> - callElement.calleeExpression?.let { referenceProcessor.process(it.mainReference) } != false + callElement.calleeExpression?.let { callee -> + val reference = callee.mainReference + reference == null || referenceProcessor.process(reference) + } != false } ) }