From 4045dfeecbe0b39fd8f41e95885cb932cfc1b810 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Mon, 10 Nov 2025 17:50:40 +0100 Subject: [PATCH] IDEA-354817 [Java]: add test for find usages for constructors GitOrigin-RevId: b387fe335d9d8813326e841694b0f889a6d6bf29 --- .../HeadlessHorsewoman.java | 6 +++++ .../java/psi/search/FindUsagesTest.java | 22 +++++++++++++++---- 2 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 java/java-tests/testData/psi/search/findUsages/findConstructorUsagesFromClass/HeadlessHorsewoman.java diff --git a/java/java-tests/testData/psi/search/findUsages/findConstructorUsagesFromClass/HeadlessHorsewoman.java b/java/java-tests/testData/psi/search/findUsages/findConstructorUsagesFromClass/HeadlessHorsewoman.java new file mode 100644 index 000000000000..5872882ce3ab --- /dev/null +++ b/java/java-tests/testData/psi/search/findUsages/findConstructorUsagesFromClass/HeadlessHorsewoman.java @@ -0,0 +1,6 @@ +public class HeadlessHorsewoman { + + public static void main(String[] args) { + HeadlessHorsewoman x = new HeadlessHorsewoman(); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/psi/search/FindUsagesTest.java b/java/java-tests/testSrc/com/intellij/java/psi/search/FindUsagesTest.java index c3fe67987ca6..ea89339ed43f 100644 --- a/java/java-tests/testSrc/com/intellij/java/psi/search/FindUsagesTest.java +++ b/java/java-tests/testSrc/com/intellij/java/psi/search/FindUsagesTest.java @@ -3,10 +3,7 @@ package com.intellij.java.psi.search; import com.intellij.JavaTestUtil; import com.intellij.find.FindManager; -import com.intellij.find.findUsages.FindUsagesHandler; -import com.intellij.find.findUsages.FindUsagesHandlerFactory; -import com.intellij.find.findUsages.JavaFindUsagesHandler; -import com.intellij.find.findUsages.JavaFindUsagesHandlerFactory; +import com.intellij.find.findUsages.*; import com.intellij.find.impl.FindManagerImpl; import com.intellij.ide.highlighter.XmlFileType; import com.intellij.lang.java.JavaLanguage; @@ -21,6 +18,7 @@ import com.intellij.openapi.progress.EmptyProgressIndicator; import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.project.IndexNotReadyException; import com.intellij.openapi.util.TextRange; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.patterns.PlatformPatterns; import com.intellij.psi.*; import com.intellij.psi.impl.source.resolve.reference.PsiReferenceRegistrarImpl; @@ -36,6 +34,7 @@ import com.intellij.testFramework.PsiTestUtil; import com.intellij.testFramework.fixtures.IdeaTestFixtureFactory; import com.intellij.testFramework.fixtures.TempDirTestFixture; import com.intellij.usageView.UsageInfo; +import com.intellij.util.CommonProcessors; import com.intellij.util.ProcessingContext; import com.intellij.util.Processor; import com.intellij.util.TimeoutUtil; @@ -121,6 +120,21 @@ public class FindUsagesTest extends JavaPsiTestCase { assertEquals(2, ReferencesSearch.search(decompiled, GlobalSearchScope.projectScope(myProject)).findAll().size()); } + public void testFindConstructorUsagesFromClass() { + PsiClass aClass = myJavaFacade.findClass("HeadlessHorsewoman", GlobalSearchScope.allScope(myProject)); + JavaClassFindUsagesOptions options = new JavaClassFindUsagesOptions(getProject()); + options.isUsages = false; + options.isConstructorUsages = true; + CommonProcessors.CollectProcessor processor = new CommonProcessors.CollectProcessor<>(); + FindUsagesManager findUsagesManager = ((FindManagerImpl)FindManager.getInstance(myProject)).getFindUsagesManager(); + FindUsagesHandler handler = findUsagesManager.getFindUsagesHandler(aClass, false); + assertNotNull(handler); + handler.processElementUsages(aClass, processor, options); + Collection usages = processor.getResults(); + assertEquals(1, usages.size()); + assertEquals("new HeadlessHorsewoman()", StringUtil.join(usages, u -> u.getElement().getParent().getText() , ", ")); + } + public void testDefaultConstructor() { PsiClass aClass = myJavaFacade.findClass("Animal", GlobalSearchScope.allScope(myProject)); PsiMethod main = aClass.findMethodsByName("main", false)[0];