[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
|
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.KtLibraryModule
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.KtLibrarySourceModule
|
import org.jetbrains.kotlin.analysis.project.structure.KtLibrarySourceModule
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.impl.KtLibraryModuleImpl
|
import org.jetbrains.kotlin.analysis.project.structure.impl.KtLibraryModuleImpl
|
||||||
@@ -21,6 +22,7 @@ public class KtLibraryModuleBuilder(
|
|||||||
public var librarySources: KtLibrarySourceModule? = null
|
public var librarySources: KtLibrarySourceModule? = null
|
||||||
|
|
||||||
override fun build(): KtLibraryModule {
|
override fun build(): KtLibraryModule {
|
||||||
|
val contentScope = StandaloneProjectFactory.createSearchScopeByLibraryRoots(binaryRoots, kotlinCoreProjectEnvironment)
|
||||||
return KtLibraryModuleImpl(
|
return KtLibraryModuleImpl(
|
||||||
directRegularDependencies,
|
directRegularDependencies,
|
||||||
directDependsOnDependencies,
|
directDependsOnDependencies,
|
||||||
|
|||||||
+2
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.analysis.project.structure.builder
|
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.KtLibraryModule
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.KtLibrarySourceModule
|
import org.jetbrains.kotlin.analysis.project.structure.KtLibrarySourceModule
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.impl.KtLibrarySourceModuleImpl
|
import org.jetbrains.kotlin.analysis.project.structure.impl.KtLibrarySourceModuleImpl
|
||||||
@@ -19,6 +20,7 @@ public class KtLibrarySourceModuleBuilder(
|
|||||||
) : KtModuleBuilder() {
|
) : KtModuleBuilder() {
|
||||||
public lateinit var libraryName: String
|
public lateinit var libraryName: String
|
||||||
public lateinit var binaryLibrary: KtLibraryModule
|
public lateinit var binaryLibrary: KtLibraryModule
|
||||||
|
public lateinit var contentScope: GlobalSearchScope
|
||||||
|
|
||||||
override fun build(): KtLibrarySourceModule {
|
override fun build(): KtLibrarySourceModule {
|
||||||
return KtLibrarySourceModuleImpl(
|
return KtLibrarySourceModuleImpl(
|
||||||
|
|||||||
-2
@@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.analysis.project.structure.builder
|
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.analysis.project.structure.KtModule
|
||||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
|
|
||||||
@@ -27,7 +26,6 @@ public abstract class KtModuleBuilder {
|
|||||||
directFriendDependencies.add(module)
|
directFriendDependencies.add(module)
|
||||||
}
|
}
|
||||||
|
|
||||||
public lateinit var contentScope: GlobalSearchScope
|
|
||||||
public lateinit var platform: TargetPlatform
|
public lateinit var platform: TargetPlatform
|
||||||
|
|
||||||
public abstract fun build(): KtModule
|
public abstract fun build(): KtModule
|
||||||
|
|||||||
+3
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.analysis.project.structure.builder
|
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.KtSdkModule
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.impl.KtSdkModuleImpl
|
import org.jetbrains.kotlin.analysis.project.structure.impl.KtSdkModuleImpl
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreProjectEnvironment
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreProjectEnvironment
|
||||||
@@ -19,6 +20,8 @@ public class KtSdkModuleBuilder(
|
|||||||
public lateinit var sdkName: String
|
public lateinit var sdkName: String
|
||||||
|
|
||||||
override fun build(): KtSdkModule {
|
override fun build(): KtSdkModule {
|
||||||
|
val contentScope = StandaloneProjectFactory.createSearchScopeByLibraryRoots(binaryRoots, kotlinCoreProjectEnvironment)
|
||||||
|
|
||||||
return KtSdkModuleImpl(
|
return KtSdkModuleImpl(
|
||||||
directRegularDependencies,
|
directRegularDependencies,
|
||||||
directDependsOnDependencies,
|
directDependsOnDependencies,
|
||||||
|
|||||||
+4
-1
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.analysis.project.structure.builder
|
package org.jetbrains.kotlin.analysis.project.structure.builder
|
||||||
|
|
||||||
import com.intellij.psi.PsiFileSystemItem
|
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.KtSourceModule
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.impl.KtSourceModuleImpl
|
import org.jetbrains.kotlin.analysis.project.structure.impl.KtSourceModuleImpl
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreProjectEnvironment
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreProjectEnvironment
|
||||||
@@ -19,11 +20,13 @@ import kotlin.contracts.contract
|
|||||||
|
|
||||||
@KtModuleBuilderDsl
|
@KtModuleBuilderDsl
|
||||||
public class KtSourceModuleBuilder(
|
public class KtSourceModuleBuilder(
|
||||||
private val kotlinCoreProjectEnvironment: KotlinCoreProjectEnvironment
|
private val kotlinCoreProjectEnvironment: KotlinCoreProjectEnvironment,
|
||||||
) : KtModuleBuilder() {
|
) : KtModuleBuilder() {
|
||||||
public lateinit var moduleName: String
|
public lateinit var moduleName: String
|
||||||
public var languageVersionSettings: LanguageVersionSettings =
|
public var languageVersionSettings: LanguageVersionSettings =
|
||||||
LanguageVersionSettingsImpl(LanguageVersion.LATEST_STABLE, ApiVersion.LATEST)
|
LanguageVersionSettingsImpl(LanguageVersion.LATEST_STABLE, ApiVersion.LATEST)
|
||||||
|
public lateinit var contentScope: GlobalSearchScope
|
||||||
|
|
||||||
private val sourceRoots: MutableList<PsiFileSystemItem> = mutableListOf()
|
private val sourceRoots: MutableList<PsiFileSystemItem> = mutableListOf()
|
||||||
|
|
||||||
public fun addSourceRoot(file: PsiFileSystemItem) {
|
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.ide.highlighter.JavaFileType
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.vfs.StandardFileSystems
|
import com.intellij.openapi.vfs.StandardFileSystems
|
||||||
import com.intellij.openapi.vfs.VirtualFileManager
|
|
||||||
import com.intellij.psi.PsiFileSystemItem
|
import com.intellij.psi.PsiFileSystemItem
|
||||||
import com.intellij.psi.PsiManager
|
import com.intellij.psi.PsiManager
|
||||||
import com.intellij.psi.search.GlobalSearchScope
|
|
||||||
import com.intellij.psi.search.ProjectScope
|
|
||||||
import com.intellij.util.io.URLUtil
|
import com.intellij.util.io.URLUtil
|
||||||
import org.jetbrains.kotlin.analysis.api.impl.base.util.LibraryUtils
|
import org.jetbrains.kotlin.analysis.api.impl.base.util.LibraryUtils
|
||||||
import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtStaticProjectStructureProvider
|
import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtStaticProjectStructureProvider
|
||||||
@@ -163,22 +160,18 @@ internal fun buildKtModuleProviderByCompilerConfiguration(
|
|||||||
val libraryRoots = compilerConfig.jvmModularRoots + compilerConfig.jvmClasspathRoots
|
val libraryRoots = compilerConfig.jvmModularRoots + compilerConfig.jvmClasspathRoots
|
||||||
addRegularDependency(
|
addRegularDependency(
|
||||||
buildKtLibraryModule {
|
buildKtLibraryModule {
|
||||||
contentScope = ProjectScope.getLibrariesScope(kotlinCoreProjectEnvironment.project)
|
|
||||||
this.platform = platform
|
this.platform = platform
|
||||||
binaryRoots = libraryRoots.map { it.toPath() }
|
binaryRoots = libraryRoots.map { it.toPath() }
|
||||||
libraryName = "Library for $moduleName"
|
libraryName = "Library for $moduleName"
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
compilerConfig.get(JVMConfigurationKeys.JDK_HOME)?.let { jdkHome ->
|
compilerConfig.get(JVMConfigurationKeys.JDK_HOME)?.let { jdkHome ->
|
||||||
val vfm = VirtualFileManager.getInstance()
|
|
||||||
val jdkHomePath = jdkHome.toPath()
|
val jdkHomePath = jdkHome.toPath()
|
||||||
val jdkHomeVirtualFile = vfm.findFileByNioPath(jdkHomePath)
|
|
||||||
val binaryRoots = LibraryUtils.findClassesFromJdkHome(jdkHomePath).map {
|
val binaryRoots = LibraryUtils.findClassesFromJdkHome(jdkHomePath).map {
|
||||||
Paths.get(URLUtil.extractPath(it))
|
Paths.get(URLUtil.extractPath(it))
|
||||||
}
|
}
|
||||||
addRegularDependency(
|
addRegularDependency(
|
||||||
buildKtSdkModule {
|
buildKtSdkModule {
|
||||||
contentScope = GlobalSearchScope.fileScope(kotlinCoreProjectEnvironment.project, jdkHomeVirtualFile)
|
|
||||||
this.platform = platform
|
this.platform = platform
|
||||||
this.binaryRoots = binaryRoots
|
this.binaryRoots = binaryRoots
|
||||||
sdkName = "JDK for $moduleName"
|
sdkName = "JDK for $moduleName"
|
||||||
|
|||||||
Reference in New Issue
Block a user