in plugin-bazel/src/main/kotlin/org/jetbrains/bazel/languages/starlark/references/StarlarkGlobReference.kt [24:60]
override fun multiResolve(incompleteCode: Boolean): Array<out ResolveResult> {
val containingDirectory = element.containingFile.parent?.virtualFile
if (containingDirectory == null) {
return ResolveResult.EMPTY_ARRAY
}
val includes = resolveListContents(element.getIncludes())
val excludes = resolveListContents(element.getExcludes())
val directoriesExcluded = element.areDirectoriesExcluded()
if (includes.isEmpty()) {
return ResolveResult.EMPTY_ARRAY
}
val project = element.getProject()
try {
val files: List<VirtualFile> =
StarlarkGlob
.forPath(containingDirectory)
.addPatterns(includes)
.addExcludes(excludes)
.setExcludeDirectories(directoriesExcluded)
.setDirectoryFilter(directoryFilter(containingDirectory.path))
.glob()
val results: MutableList<ResolveResult> = arrayListOf()
for (file in files) {
val psiFile: PsiFileSystemItem? = resolveFile(file, project)
if (psiFile != null) {
results.add(PsiElementResolveResult(psiFile))
}
}
return results.toTypedArray()
} catch (_: Exception) {
return ResolveResult.EMPTY_ARRAY
}
}