Skip to content

Commit

Permalink
fix(devins-java): improve symbol resolution logic #101
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
phodal committed Mar 18, 2024
1 parent dd80d94 commit fd6c134
Showing 1 changed file with 10 additions and 1 deletion.
Expand Up @@ -54,17 +54,26 @@ class JavaCustomDevInsSymbolProvider : DevInsSymbolProvider {
override fun resolveSymbol(project: Project, symbol: String): Iterable<String> {
val scope = GlobalSearchScope.allScope(project)

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

// for class name only
// for class name only, like `cc.unitmesh.idea.provider.JavaCustomDevInsSymbolProvider`
val psiClasses = PsiShortNamesCache.getInstance(project).getClassesByName(symbol, scope)
if (psiClasses.isNotEmpty()) {
return psiClasses.map { it.qualifiedName!! }
}

// for single class, with function name, like `cc.unitmesh.idea.provider.JavaCustomDevInsSymbolProvider`
val clazz = JavaFileManagerImpl(project).findClass(symbol, scope)
if (clazz != null) {
return clazz.methods.map { "${clazz.qualifiedName}#${it.name}" }
}

// for lookup for method


return emptyList()
}
}

0 comments on commit fd6c134

Please sign in to comment.