[Analysis API Standalone] automatically collect GlobalSearchScope for KtBinaryModule
^KT-60884
This commit is contained in:
committed by
Space Team
parent
97a7c0b6ff
commit
eb2c4e4015
+2
@@ -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,
|
||||
|
||||
+2
@@ -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(
|
||||
|
||||
-2
@@ -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
|
||||
|
||||
+3
@@ -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,
|
||||
|
||||
+4
-1
@@ -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<PsiFileSystemItem> = mutableListOf()
|
||||
|
||||
public fun addSourceRoot(file: PsiFileSystemItem) {
|
||||
|
||||
-7
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user