override fun multiResolve()

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
    }
  }