Skip to content

Commit fd6c134

Browse files
committed
fix(devins-java): improve symbol resolution logic #101
Improve symbol resolution by adding support for package names, class names, and single class with function names. Refactored code to use JavaFileManagerImpl for better retrieval of class and package information.
1 parent dd80d94 commit fd6c134

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,17 +54,26 @@ class JavaCustomDevInsSymbolProvider : DevInsSymbolProvider {
5454
override fun resolveSymbol(project: Project, symbol: String): Iterable<String> {
5555
val scope = GlobalSearchScope.allScope(project)
5656

57+
// for package name only, like `cc.unitmesh`
5758
JavaFileManagerImpl(project).findPackage(symbol)?.let { pkg ->
5859
return pkg.classes.map { it.qualifiedName!! }
5960
}
6061

61-
// for class name only
62+
// for class name only, like `cc.unitmesh.idea.provider.JavaCustomDevInsSymbolProvider`
6263
val psiClasses = PsiShortNamesCache.getInstance(project).getClassesByName(symbol, scope)
6364
if (psiClasses.isNotEmpty()) {
6465
return psiClasses.map { it.qualifiedName!! }
6566
}
6667

68+
// for single class, with function name, like `cc.unitmesh.idea.provider.JavaCustomDevInsSymbolProvider`
69+
val clazz = JavaFileManagerImpl(project).findClass(symbol, scope)
70+
if (clazz != null) {
71+
return clazz.methods.map { "${clazz.qualifiedName}#${it.name}" }
72+
}
73+
6774
// for lookup for method
75+
76+
6877
return emptyList()
6978
}
7079
}

0 commit comments

Comments
 (0)