Skip to content

Commit 02c539e

Browse files
committed
feat(java): include class inheritors in related classes lookup
Add support for finding class inheritors in JavaRelatedClassesProvider. This enhances the lookup functionality by including inheritors in the distinct list of related classes.
1 parent 6571cc5 commit 02c539e

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

java/src/main/kotlin/cc/unitmesh/idea/provider/JavaRelatedClassesProvider.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package cc.unitmesh.idea.provider
22

3+
import cc.unitmesh.devti.mcp.Query
34
import cc.unitmesh.devti.provider.RelatedClassesProvider
45
import cc.unitmesh.idea.context.JavaContextCollection
56
import cc.unitmesh.idea.service.JavaTypeUtil.resolveByType
@@ -9,10 +10,13 @@ import com.intellij.openapi.application.runReadAction
910
import com.intellij.openapi.project.Project
1011
import com.intellij.openapi.roots.ProjectFileIndex
1112
import com.intellij.psi.*
13+
import com.intellij.psi.search.GlobalSearchScope
14+
import com.intellij.psi.search.searches.ClassInheritorsSearch
1215
import com.intellij.psi.util.PsiTreeUtil
1316
import com.intellij.psi.util.PsiUtil
1417
import com.intellij.testIntegration.TestFinderHelper
1518

19+
1620
class JavaRelatedClassesProvider : RelatedClassesProvider {
1721
override fun lookupIO(element: PsiElement): List<PsiClass> {
1822
return when (element) {
@@ -80,7 +84,12 @@ class JavaRelatedClassesProvider : RelatedClassesProvider {
8084
else -> null
8185
}
8286
}
83-
return@runReadAction (fieldsTypes + methods).distinct()
87+
val inheritors: Collection<PsiClass> =
88+
ClassInheritorsSearch.search(clazz, GlobalSearchScope.allScope(clazz.project), true)
89+
.findAll()
90+
.toList()
91+
92+
return@runReadAction (fieldsTypes + methods + inheritors).distinct()
8493
}
8594
}?.get() ?: emptyList()
8695
}

0 commit comments

Comments
 (0)