AA: add JDK_HOME as dependent SDK module
This commit is contained in:
committed by
Ilya Kirillov
parent
af32a65c78
commit
3f05ba04a9
+2
-2
@@ -19,8 +19,8 @@ class KtStaticModuleProvider(
|
||||
}.ktModule
|
||||
}
|
||||
|
||||
override fun getKtLibraryModules(): Collection<KtLibraryModule> {
|
||||
return testProjectStructure.allKtModules().filterIsInstance<KtLibraryModule>()
|
||||
override fun getKtBinaryModules(): Collection<KtBinaryModule> {
|
||||
return testProjectStructure.allKtModules().filterIsInstance<KtBinaryModule>()
|
||||
}
|
||||
|
||||
override fun getStdlibWithBuiltinsModule(module: KtModule): KtLibraryModule {
|
||||
|
||||
+31
-5
@@ -6,12 +6,13 @@
|
||||
package org.jetbrains.kotlin.analysis.project.structure.impl
|
||||
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.openapi.vfs.VirtualFileManager
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import com.intellij.psi.search.ProjectScope
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtLibraryModule
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtLibrarySourceModule
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtSourceModule
|
||||
import com.intellij.util.io.URLUtil
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.util.LibraryUtils
|
||||
import org.jetbrains.kotlin.analysis.project.structure.*
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM
|
||||
import org.jetbrains.kotlin.cli.jvm.config.jvmClasspathRoots
|
||||
import org.jetbrains.kotlin.cli.jvm.config.jvmModularRoots
|
||||
@@ -22,6 +23,7 @@ import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.resolve.PlatformDependentAnalyzerServices
|
||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices
|
||||
import java.nio.file.Path
|
||||
import java.nio.file.Paths
|
||||
|
||||
internal abstract class BaseKtModuleByCompilerConfiguration(
|
||||
private val compilerConfig: CompilerConfiguration,
|
||||
@@ -51,7 +53,7 @@ internal class KtSourceModuleByCompilerConfiguration(
|
||||
project: Project,
|
||||
ktFiles: List<KtFile>,
|
||||
) : BaseKtModuleByCompilerConfiguration(compilerConfig, project), KtSourceModule {
|
||||
override val directRegularDependencies: List<KtLibraryModule> by lazy {
|
||||
override val directRegularDependencies: List<KtBinaryModule> by lazy {
|
||||
val libraryRoots = compilerConfig.jvmModularRoots + compilerConfig.jvmClasspathRoots
|
||||
val libraryRootsByType = libraryRoots.groupBy { it.isDirectory }
|
||||
buildList {
|
||||
@@ -69,6 +71,15 @@ internal class KtSourceModuleByCompilerConfiguration(
|
||||
add(KtLibraryModuleByCompilerConfiguration(compilerConfig, project, root))
|
||||
}
|
||||
}
|
||||
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))
|
||||
}
|
||||
add(KtSdkModuleByCompilerConfiguration(compilerConfig, project, "JDK", jdkHomeVirtualFile, binaryRoots))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -98,3 +109,18 @@ internal class KtLibraryModuleByCompilerConfiguration(
|
||||
|
||||
override fun getBinaryRoots(): Collection<Path> = binaryRoots
|
||||
}
|
||||
|
||||
internal class KtSdkModuleByCompilerConfiguration(
|
||||
compilerConfig: CompilerConfiguration,
|
||||
project: Project,
|
||||
override val sdkName: String,
|
||||
sdkHome: VirtualFile?,
|
||||
private val binaryRoots: Collection<Path>
|
||||
) : BaseKtModuleByCompilerConfiguration(compilerConfig, project), KtSdkModule {
|
||||
override val directRegularDependencies: List<KtModule> get() = emptyList()
|
||||
|
||||
override val contentScope: GlobalSearchScope =
|
||||
GlobalSearchScope.fileScope(project, sdkHome)
|
||||
|
||||
override fun getBinaryRoots(): Collection<Path> = binaryRoots
|
||||
}
|
||||
|
||||
+4
-3
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.analysis.project.structure.impl
|
||||
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtBinaryModule
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtLibraryModule
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
||||
import org.jetbrains.kotlin.analysis.project.structure.ProjectStructureProvider
|
||||
@@ -20,7 +21,7 @@ internal class KtModuleProviderByCompilerConfiguration(
|
||||
) : ProjectStructureProvider() {
|
||||
private val sourceModule = KtSourceModuleByCompilerConfiguration(compilerConfig, project, ktFiles)
|
||||
|
||||
private val libraryModules: Collection<KtLibraryModule> by lazy {
|
||||
private val binaryModules: Collection<KtBinaryModule> by lazy {
|
||||
sourceModule.directRegularDependencies
|
||||
}
|
||||
|
||||
@@ -34,8 +35,8 @@ internal class KtModuleProviderByCompilerConfiguration(
|
||||
}
|
||||
}
|
||||
|
||||
override fun getKtLibraryModules(): Collection<KtLibraryModule> {
|
||||
return libraryModules
|
||||
override fun getKtBinaryModules(): Collection<KtBinaryModule> {
|
||||
return binaryModules
|
||||
}
|
||||
|
||||
override fun getStdlibWithBuiltinsModule(module: KtModule): KtLibraryModule? {
|
||||
|
||||
Reference in New Issue
Block a user