[Analysis API Standalone] simplify initializing KtSdkModuleBuilder with JDK
^KT-60884
This commit is contained in:
committed by
Space Team
parent
1f290828e5
commit
fcf062a252
+7
@@ -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)
|
||||
|
||||
|
||||
+1
-7
@@ -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"
|
||||
}
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user