From eb2c4e4015fdc0bd61a815be96f2202580563e99 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Tue, 29 Aug 2023 20:32:38 +0200 Subject: [PATCH] [Analysis API Standalone] automatically collect `GlobalSearchScope` for `KtBinaryModule` ^KT-60884 --- .../project/structure/builder/KtLibraryModuleBuilder.kt | 2 ++ .../structure/builder/KtLibrarySourceModuleBuilder.kt | 2 ++ .../analysis/project/structure/builder/KtModuleBuilder.kt | 2 -- .../project/structure/builder/KtSdkModuleBuilder.kt | 3 +++ .../project/structure/builder/KtSourceModuleBuilder.kt | 5 ++++- .../analysis/project/structure/impl/KtModuleUtils.kt | 7 ------- 6 files changed, 11 insertions(+), 10 deletions(-) diff --git a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KtLibraryModuleBuilder.kt b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KtLibraryModuleBuilder.kt index 225b18500b1..a9c000e7003 100644 --- a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KtLibraryModuleBuilder.kt +++ b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KtLibraryModuleBuilder.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.analysis.project.structure.builder +import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.StandaloneProjectFactory import org.jetbrains.kotlin.analysis.project.structure.KtLibraryModule import org.jetbrains.kotlin.analysis.project.structure.KtLibrarySourceModule import org.jetbrains.kotlin.analysis.project.structure.impl.KtLibraryModuleImpl @@ -21,6 +22,7 @@ public class KtLibraryModuleBuilder( public var librarySources: KtLibrarySourceModule? = null override fun build(): KtLibraryModule { + val contentScope = StandaloneProjectFactory.createSearchScopeByLibraryRoots(binaryRoots, kotlinCoreProjectEnvironment) return KtLibraryModuleImpl( directRegularDependencies, directDependsOnDependencies, diff --git a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KtLibrarySourceModuleBuilder.kt b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KtLibrarySourceModuleBuilder.kt index 5dc15b66260..6e504293469 100644 --- a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KtLibrarySourceModuleBuilder.kt +++ b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KtLibrarySourceModuleBuilder.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.analysis.project.structure.builder +import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.analysis.project.structure.KtLibraryModule import org.jetbrains.kotlin.analysis.project.structure.KtLibrarySourceModule import org.jetbrains.kotlin.analysis.project.structure.impl.KtLibrarySourceModuleImpl @@ -19,6 +20,7 @@ public class KtLibrarySourceModuleBuilder( ) : KtModuleBuilder() { public lateinit var libraryName: String public lateinit var binaryLibrary: KtLibraryModule + public lateinit var contentScope: GlobalSearchScope override fun build(): KtLibrarySourceModule { return KtLibrarySourceModuleImpl( diff --git a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KtModuleBuilder.kt b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KtModuleBuilder.kt index 5fcd76559cc..41aff6d6780 100644 --- a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KtModuleBuilder.kt +++ b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KtModuleBuilder.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.analysis.project.structure.builder -import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.analysis.project.structure.KtModule import org.jetbrains.kotlin.platform.TargetPlatform @@ -27,7 +26,6 @@ public abstract class KtModuleBuilder { directFriendDependencies.add(module) } - public lateinit var contentScope: GlobalSearchScope public lateinit var platform: TargetPlatform public abstract fun build(): KtModule diff --git a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KtSdkModuleBuilder.kt b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KtSdkModuleBuilder.kt index 6e20dba10e7..ee43b327eb5 100644 --- a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KtSdkModuleBuilder.kt +++ b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KtSdkModuleBuilder.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.analysis.project.structure.builder +import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.StandaloneProjectFactory import org.jetbrains.kotlin.analysis.project.structure.KtSdkModule import org.jetbrains.kotlin.analysis.project.structure.impl.KtSdkModuleImpl import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreProjectEnvironment @@ -19,6 +20,8 @@ public class KtSdkModuleBuilder( public lateinit var sdkName: String override fun build(): KtSdkModule { + val contentScope = StandaloneProjectFactory.createSearchScopeByLibraryRoots(binaryRoots, kotlinCoreProjectEnvironment) + return KtSdkModuleImpl( directRegularDependencies, directDependsOnDependencies, diff --git a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KtSourceModuleBuilder.kt b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KtSourceModuleBuilder.kt index 2408f997f07..1f5e17993a7 100644 --- a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KtSourceModuleBuilder.kt +++ b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KtSourceModuleBuilder.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.analysis.project.structure.builder import com.intellij.psi.PsiFileSystemItem +import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.analysis.project.structure.KtSourceModule import org.jetbrains.kotlin.analysis.project.structure.impl.KtSourceModuleImpl import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreProjectEnvironment @@ -19,11 +20,13 @@ import kotlin.contracts.contract @KtModuleBuilderDsl public class KtSourceModuleBuilder( - private val kotlinCoreProjectEnvironment: KotlinCoreProjectEnvironment + private val kotlinCoreProjectEnvironment: KotlinCoreProjectEnvironment, ) : KtModuleBuilder() { public lateinit var moduleName: String public var languageVersionSettings: LanguageVersionSettings = LanguageVersionSettingsImpl(LanguageVersion.LATEST_STABLE, ApiVersion.LATEST) + public lateinit var contentScope: GlobalSearchScope + private val sourceRoots: MutableList = mutableListOf() public fun addSourceRoot(file: PsiFileSystemItem) { diff --git a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/impl/KtModuleUtils.kt b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/impl/KtModuleUtils.kt index d7f6f68c480..908df6ac276 100644 --- a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/impl/KtModuleUtils.kt +++ b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/impl/KtModuleUtils.kt @@ -9,11 +9,8 @@ import com.google.common.io.Files.getFileExtension import com.intellij.ide.highlighter.JavaFileType import com.intellij.openapi.project.Project import com.intellij.openapi.vfs.StandardFileSystems -import com.intellij.openapi.vfs.VirtualFileManager import com.intellij.psi.PsiFileSystemItem import com.intellij.psi.PsiManager -import com.intellij.psi.search.GlobalSearchScope -import com.intellij.psi.search.ProjectScope import com.intellij.util.io.URLUtil import org.jetbrains.kotlin.analysis.api.impl.base.util.LibraryUtils import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtStaticProjectStructureProvider @@ -163,22 +160,18 @@ internal fun buildKtModuleProviderByCompilerConfiguration( val libraryRoots = compilerConfig.jvmModularRoots + compilerConfig.jvmClasspathRoots addRegularDependency( buildKtLibraryModule { - contentScope = ProjectScope.getLibrariesScope(kotlinCoreProjectEnvironment.project) this.platform = platform binaryRoots = libraryRoots.map { it.toPath() } libraryName = "Library for $moduleName" } ) compilerConfig.get(JVMConfigurationKeys.JDK_HOME)?.let { jdkHome -> - val vfm = VirtualFileManager.getInstance() val jdkHomePath = jdkHome.toPath() - val jdkHomeVirtualFile = vfm.findFileByNioPath(jdkHomePath) val binaryRoots = LibraryUtils.findClassesFromJdkHome(jdkHomePath).map { Paths.get(URLUtil.extractPath(it)) } addRegularDependency( buildKtSdkModule { - contentScope = GlobalSearchScope.fileScope(kotlinCoreProjectEnvironment.project, jdkHomeVirtualFile) this.platform = platform this.binaryRoots = binaryRoots sdkName = "JDK for $moduleName"