[Analysis API Standalone] extract functions for getting GlobalSearchScope by roots to utils
^KT-60884
This commit is contained in:
committed by
Space Team
parent
3f689494ad
commit
97a7c0b6ff
+21
@@ -31,6 +31,7 @@ import com.intellij.util.io.URLUtil.JAR_PROTOCOL
|
||||
import com.intellij.util.io.URLUtil.JAR_SEPARATOR
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.java.source.JavaElementSourceWithSmartPointerFactory
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.references.HLApiReferenceProviderService
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.util.LibraryUtils
|
||||
import org.jetbrains.kotlin.analysis.api.resolve.extensions.KtResolveExtensionProvider
|
||||
import org.jetbrains.kotlin.analysis.decompiler.psi.BuiltInsVirtualFileProvider
|
||||
import org.jetbrains.kotlin.analysis.decompiler.psi.BuiltInsVirtualFileProviderCliImpl
|
||||
@@ -328,6 +329,26 @@ object StandaloneProjectFactory {
|
||||
.filterIsInstance<KtBinaryModule>()
|
||||
.flatMap { it.getJavaRoots(environment) }
|
||||
|
||||
fun createSearchScopeByLibraryRoots(
|
||||
roots: Collection<Path>,
|
||||
environment: KotlinCoreProjectEnvironment,
|
||||
): GlobalSearchScope {
|
||||
if (roots.isEmpty()) return GlobalSearchScope.EMPTY_SCOPE
|
||||
val virtualFiles = getVirtualFilesForLibraryRootsRecursively(roots, environment)
|
||||
return GlobalSearchScope.filesScope(environment.project, virtualFiles)
|
||||
}
|
||||
|
||||
fun getVirtualFilesForLibraryRootsRecursively(
|
||||
roots: Collection<Path>,
|
||||
environment: KotlinCoreProjectEnvironment,
|
||||
): Collection<VirtualFile> {
|
||||
val virtualFilesByRoots = getVirtualFilesForLibraryRoots(roots, environment)
|
||||
return buildList {
|
||||
addAll(virtualFilesByRoots)
|
||||
virtualFilesByRoots.flatMapTo(this) { LibraryUtils.getAllVirtualFilesFromRoot(it, includeRoot = true) }
|
||||
}
|
||||
}
|
||||
|
||||
fun getVirtualFilesForLibraryRoots(
|
||||
roots: Collection<Path>,
|
||||
environment: KotlinCoreProjectEnvironment,
|
||||
|
||||
Reference in New Issue
Block a user