[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
|
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.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
|
||||||
|
import java.nio.file.Path
|
||||||
import kotlin.contracts.ExperimentalContracts
|
import kotlin.contracts.ExperimentalContracts
|
||||||
import kotlin.contracts.InvocationKind
|
import kotlin.contracts.InvocationKind
|
||||||
import kotlin.contracts.contract
|
import kotlin.contracts.contract
|
||||||
@@ -19,6 +21,11 @@ public class KtSdkModuleBuilder(
|
|||||||
) : KtBinaryModuleBuilder() {
|
) : KtBinaryModuleBuilder() {
|
||||||
public lateinit var sdkName: String
|
public lateinit var sdkName: String
|
||||||
|
|
||||||
|
public fun addBinaryRootsFromJdkHome(jdkHome: Path, isJre: Boolean) {
|
||||||
|
val jdkRoots = LibraryUtils.findClassesFromJdkHome(jdkHome, isJre)
|
||||||
|
addBinaryRoots(jdkRoots)
|
||||||
|
}
|
||||||
|
|
||||||
override fun build(): KtSdkModule {
|
override fun build(): KtSdkModule {
|
||||||
val contentScope = StandaloneProjectFactory.createSearchScopeByLibraryRoots(binaryRoots, kotlinCoreProjectEnvironment)
|
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.ide.highlighter.JavaFileType
|
||||||
import com.intellij.psi.PsiFileSystemItem
|
import com.intellij.psi.PsiFileSystemItem
|
||||||
import com.intellij.psi.PsiManager
|
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.api.standalone.base.project.structure.KtStaticProjectStructureProvider
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.builder.*
|
import org.jetbrains.kotlin.analysis.project.structure.builder.*
|
||||||
import org.jetbrains.kotlin.analyzer.common.CommonPlatformAnalyzerServices
|
import org.jetbrains.kotlin.analyzer.common.CommonPlatformAnalyzerServices
|
||||||
@@ -162,14 +160,10 @@ internal fun buildKtModuleProviderByCompilerConfiguration(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
compilerConfig.get(JVMConfigurationKeys.JDK_HOME)?.let { jdkHome ->
|
compilerConfig.get(JVMConfigurationKeys.JDK_HOME)?.let { jdkHome ->
|
||||||
val jdkHomePath = jdkHome.toPath()
|
|
||||||
val binaryRoots = LibraryUtils.findClassesFromJdkHome(jdkHomePath).map {
|
|
||||||
Paths.get(URLUtil.extractPath(it))
|
|
||||||
}
|
|
||||||
addRegularDependency(
|
addRegularDependency(
|
||||||
buildKtSdkModule {
|
buildKtSdkModule {
|
||||||
this.platform = platform
|
this.platform = platform
|
||||||
addBinaryRoots(binaryRoots)
|
addBinaryRootsFromJdkHome(jdkHome.toPath(), isJre = false)
|
||||||
sdkName = "JDK for $moduleName"
|
sdkName = "JDK for $moduleName"
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user