[Analysis API Standalone] simplify initializing KtSdkModuleBuilder with JDK

^KT-60884
This commit is contained in:
Ilya Kirillov
2023-08-30 09:24:28 +02:00
committed by Space Team
parent 1f290828e5
commit fcf062a252
2 changed files with 8 additions and 7 deletions
@@ -5,10 +5,12 @@
package org.jetbrains.kotlin.analysis.project.structure.builder
import org.jetbrains.kotlin.analysis.api.impl.base.util.LibraryUtils
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
import java.nio.file.Path
import kotlin.contracts.ExperimentalContracts
import kotlin.contracts.InvocationKind
import kotlin.contracts.contract
@@ -19,6 +21,11 @@ public class KtSdkModuleBuilder(
) : KtBinaryModuleBuilder() {
public lateinit var sdkName: String
public fun addBinaryRootsFromJdkHome(jdkHome: Path, isJre: Boolean) {
val jdkRoots = LibraryUtils.findClassesFromJdkHome(jdkHome, isJre)
addBinaryRoots(jdkRoots)
}
override fun build(): KtSdkModule {
val contentScope = StandaloneProjectFactory.createSearchScopeByLibraryRoots(binaryRoots, kotlinCoreProjectEnvironment)
@@ -9,8 +9,6 @@ import com.google.common.io.Files.getFileExtension
import com.intellij.ide.highlighter.JavaFileType
import com.intellij.psi.PsiFileSystemItem
import com.intellij.psi.PsiManager
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
import org.jetbrains.kotlin.analysis.project.structure.builder.*
import org.jetbrains.kotlin.analyzer.common.CommonPlatformAnalyzerServices
@@ -162,14 +160,10 @@ internal fun buildKtModuleProviderByCompilerConfiguration(
}
)
compilerConfig.get(JVMConfigurationKeys.JDK_HOME)?.let { jdkHome ->
val jdkHomePath = jdkHome.toPath()
val binaryRoots = LibraryUtils.findClassesFromJdkHome(jdkHomePath).map {
Paths.get(URLUtil.extractPath(it))
}
addRegularDependency(
buildKtSdkModule {
this.platform = platform
addBinaryRoots(binaryRoots)
addBinaryRootsFromJdkHome(jdkHome.toPath(), isJre = false)
sdkName = "JDK for $moduleName"
}
)