[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 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.java.source.JavaElementSourceWithSmartPointerFactory
|
||||||
import org.jetbrains.kotlin.analysis.api.impl.base.references.HLApiReferenceProviderService
|
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.api.resolve.extensions.KtResolveExtensionProvider
|
||||||
import org.jetbrains.kotlin.analysis.decompiler.psi.BuiltInsVirtualFileProvider
|
import org.jetbrains.kotlin.analysis.decompiler.psi.BuiltInsVirtualFileProvider
|
||||||
import org.jetbrains.kotlin.analysis.decompiler.psi.BuiltInsVirtualFileProviderCliImpl
|
import org.jetbrains.kotlin.analysis.decompiler.psi.BuiltInsVirtualFileProviderCliImpl
|
||||||
@@ -328,6 +329,26 @@ object StandaloneProjectFactory {
|
|||||||
.filterIsInstance<KtBinaryModule>()
|
.filterIsInstance<KtBinaryModule>()
|
||||||
.flatMap { it.getJavaRoots(environment) }
|
.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(
|
fun getVirtualFilesForLibraryRoots(
|
||||||
roots: Collection<Path>,
|
roots: Collection<Path>,
|
||||||
environment: KotlinCoreProjectEnvironment,
|
environment: KotlinCoreProjectEnvironment,
|
||||||
|
|||||||
+2
-2
@@ -56,7 +56,7 @@ abstract class KtModuleByCompilerConfiguration(
|
|||||||
|
|
||||||
private fun createJdkFromConfiguration(): KtSdkModule? = configuration.get(JVMConfigurationKeys.JDK_HOME)?.let { jdkHome ->
|
private fun createJdkFromConfiguration(): KtSdkModule? = configuration.get(JVMConfigurationKeys.JDK_HOME)?.let { jdkHome ->
|
||||||
val jdkHomePaths = StandaloneProjectFactory.getDefaultJdkModulePaths(project, jdkHome.toPath())
|
val jdkHomePaths = StandaloneProjectFactory.getDefaultJdkModulePaths(project, jdkHome.toPath())
|
||||||
val scope = TestModuleStructureFactory.getScopeForLibraryByRoots(jdkHomePaths, project, testServices)
|
val scope = TestModuleStructureFactory.getScopeForLibraryByRoots(jdkHomePaths, testServices)
|
||||||
|
|
||||||
KtJdkModuleImpl(
|
KtJdkModuleImpl(
|
||||||
"jdk",
|
"jdk",
|
||||||
@@ -146,7 +146,7 @@ private class LibraryByRoot(
|
|||||||
override val project: Project,
|
override val project: Project,
|
||||||
testServices: TestServices,
|
testServices: TestServices,
|
||||||
) : KtLibraryModule {
|
) : KtLibraryModule {
|
||||||
override val contentScope: GlobalSearchScope = TestModuleStructureFactory.getScopeForLibraryByRoots(listOf(root), project, testServices)
|
override val contentScope: GlobalSearchScope = TestModuleStructureFactory.getScopeForLibraryByRoots(listOf(root), testServices)
|
||||||
override val libraryName: String get() = "Test Library $root"
|
override val libraryName: String get() = "Test Library $root"
|
||||||
override val directRegularDependencies: List<KtModule> get() = emptyList()
|
override val directRegularDependencies: List<KtModule> get() = emptyList()
|
||||||
override val directDependsOnDependencies: List<KtModule> get() = emptyList()
|
override val directDependsOnDependencies: List<KtModule> get() = emptyList()
|
||||||
|
|||||||
+4
-12
@@ -9,7 +9,6 @@ import com.intellij.openapi.project.Project
|
|||||||
import com.intellij.psi.PsiFile
|
import com.intellij.psi.PsiFile
|
||||||
import com.intellij.psi.PsiManager
|
import com.intellij.psi.PsiManager
|
||||||
import com.intellij.psi.search.GlobalSearchScope
|
import com.intellij.psi.search.GlobalSearchScope
|
||||||
import org.jetbrains.kotlin.analysis.api.impl.base.util.LibraryUtils
|
|
||||||
import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtModuleProjectStructure
|
import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtModuleProjectStructure
|
||||||
import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtModuleWithFiles
|
import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtModuleWithFiles
|
||||||
import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.StandaloneProjectFactory
|
import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.StandaloneProjectFactory
|
||||||
@@ -131,7 +130,7 @@ object TestModuleStructureFactory {
|
|||||||
return KtLibraryModuleImpl(
|
return KtLibraryModuleImpl(
|
||||||
libraryName,
|
libraryName,
|
||||||
JvmPlatforms.defaultJvmPlatform,
|
JvmPlatforms.defaultJvmPlatform,
|
||||||
getScopeForLibraryByRoots(listOf(jar), project, testServices),
|
getScopeForLibraryByRoots(listOf(jar), testServices),
|
||||||
project,
|
project,
|
||||||
listOf(jar),
|
listOf(jar),
|
||||||
librarySources = null,
|
librarySources = null,
|
||||||
@@ -168,24 +167,17 @@ object TestModuleStructureFactory {
|
|||||||
return KtJdkModuleImpl(
|
return KtJdkModuleImpl(
|
||||||
"jdk",
|
"jdk",
|
||||||
JvmPlatforms.defaultJvmPlatform,
|
JvmPlatforms.defaultJvmPlatform,
|
||||||
getScopeForLibraryByRoots(jdkSourceRoots, project, testServices),
|
getScopeForLibraryByRoots(jdkSourceRoots, testServices),
|
||||||
project,
|
project,
|
||||||
jdkSourceRoots
|
jdkSourceRoots
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getScopeForLibraryByRoots(roots: Collection<Path>, project: Project, testServices: TestServices): GlobalSearchScope {
|
fun getScopeForLibraryByRoots(roots: Collection<Path>, testServices: TestServices): GlobalSearchScope {
|
||||||
val virtualFileRoots = StandaloneProjectFactory.getVirtualFilesForLibraryRoots(
|
return StandaloneProjectFactory.createSearchScopeByLibraryRoots(
|
||||||
roots,
|
roots,
|
||||||
testServices.environmentManager.getProjectEnvironment()
|
testServices.environmentManager.getProjectEnvironment()
|
||||||
)
|
)
|
||||||
return GlobalSearchScope.filesScope(
|
|
||||||
project,
|
|
||||||
buildList {
|
|
||||||
addAll(virtualFileRoots)
|
|
||||||
virtualFileRoots.flatMapTo(this) { LibraryUtils.getAllVirtualFilesFromRoot(it, includeRoot = true) }
|
|
||||||
}
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createSourcePsiFiles(
|
fun createSourcePsiFiles(
|
||||||
|
|||||||
Reference in New Issue
Block a user