Make jdk root processing more robust

#KT-54337 fixed
This commit is contained in:
Ilya Chernikov
2022-10-07 13:06:52 +02:00
committed by Space Team
parent 942def5828
commit b50a803b6f
7 changed files with 46 additions and 12 deletions
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.cli.jvm.compiler.NoScopeRecordCliBindingTrace
import org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM
import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot
import org.jetbrains.kotlin.cli.jvm.config.JvmModulePathRoot
import org.jetbrains.kotlin.codegen.ClassBuilderFactories
import org.jetbrains.kotlin.codegen.DefaultCodegenFactory
import org.jetbrains.kotlin.codegen.KotlinCodegenFacade
@@ -144,7 +145,13 @@ private fun compileImpl(
// TODO: make this logic obsolete by injecting classpath earlier in the pipeline
val depsFromConfiguration = get(dependencies)?.flatMapTo(HashSet()) { (it as? JvmDependency)?.classpath ?: emptyList() }
val depsFromCompiler = context.environment.configuration.getList(CLIConfigurationKeys.CONTENT_ROOTS)
.mapNotNull { if (it is JvmClasspathRoot && !it.isSdkRoot) it.file else null }
.mapNotNull {
when {
it is JvmClasspathRoot && !it.isSdkRoot -> it.file
it is JvmModulePathRoot -> it.file
else -> null
}
}
if (!depsFromConfiguration.isNullOrEmpty()) {
val missingDeps = depsFromCompiler.filter { !depsFromConfiguration.contains(it) }
if (missingDeps.isNotEmpty()) {