diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/ClasspathRootsResolver.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/ClasspathRootsResolver.kt index 647f885920a..f68acfbc53f 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/ClasspathRootsResolver.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/ClasspathRootsResolver.kt @@ -56,7 +56,7 @@ class ClasspathRootsResolver( private val requireStdlibModule: Boolean, private val outputDirectory: VirtualFile?, private val javaFileManager: KotlinCliJavaFileManager, - private val jdkRelease: Int + private val jdkRelease: Int? ) { val javaModuleGraph = JavaModuleGraph(javaModuleFinder) @@ -125,7 +125,7 @@ class ClasspathRootsResolver( modules += module } } - if (jdkRelease <= 0 || jdkRelease >= 9) { + if (jdkRelease == null || jdkRelease >= 9) { addModularRoots(modules, result) } else { //TODO: see also `addJvmSdkRoots` usages, some refactoring is required with moving such logic into one place diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt index 98d46a622c9..cfde9a38a40 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt @@ -239,7 +239,7 @@ class KotlinCoreEnvironment private constructor( val javaFileManager = ServiceManager.getService(project, CoreJavaFileManager::class.java) as KotlinCliJavaFileManagerImpl val jdkHome = configuration.get(JVMConfigurationKeys.JDK_HOME) - val releaseTarget = configuration.get(JVMConfigurationKeys.JDK_RELEASE, 0) + val releaseTarget = configuration.get(JVMConfigurationKeys.JDK_RELEASE) val javaModuleFinder = CliJavaModuleFinder( jdkHome, messageCollector, @@ -289,7 +289,7 @@ class KotlinCoreEnvironment private constructor( CliJavaModuleResolver(classpathRootsResolver.javaModuleGraph, javaModules, javaModuleFinder.systemModules.toList(), project) ) - val finderFactory = CliVirtualFileFinderFactory(rootsIndex, releaseTarget != 0) + val finderFactory = CliVirtualFileFinderFactory(rootsIndex, releaseTarget != null) project.registerService(MetadataFinderFactory::class.java, finderFactory) project.registerService(VirtualFileFinderFactory::class.java, finderFactory) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/modules/CliJavaModuleFinder.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/modules/CliJavaModuleFinder.kt index 905dd89edce..4802d038fd9 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/modules/CliJavaModuleFinder.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/modules/CliJavaModuleFinder.kt @@ -36,7 +36,7 @@ class CliJavaModuleFinder( private val messageCollector: MessageCollector?, private val javaFileManager: KotlinCliJavaFileManager, project: Project, - private val releaseTarget: Int + private val jdkRelease: Int? ) : JavaModuleFinder { private val jrtFileSystemRoot = jdkHome?.path?.let { path -> @@ -59,7 +59,7 @@ class CliJavaModuleFinder( val ctSym = lib.findChild("ct.sym") ?: return@lazy reportError( - "This JDK does not have the 'ct.sym' file required for the '-Xjdk-release=$releaseTarget' option: ${jdkHome.path}" + "This JDK does not have the 'ct.sym' file required for the '-Xjdk-release=$jdkRelease' option: ${jdkHome.path}" ) ctSym @@ -93,7 +93,7 @@ class CliJavaModuleFinder( get() = compilationJdkVersion >= 12 private val useLastJdkApi: Boolean - get() = releaseTarget == 0 || releaseTarget == compilationJdkVersion + get() = jdkRelease == null || jdkRelease == compilationJdkVersion fun addUserModule(module: JavaModule) { userModules.putIfAbsent(module.name, module) @@ -160,14 +160,14 @@ class CliJavaModuleFinder( fun listFoldersForRelease(): List { if (ctSymRootFolder == null) return emptyList() - return ctSymRootFolder!!.children.filter { matchesRelease(it.name, releaseTarget) }.flatMap { + return ctSymRootFolder!!.children.filter { matchesRelease(it.name, jdkRelease!!) }.flatMap { if (isCompilationJDK12OrLater) it.children.toList() else { listOf(it) } }.apply { - if (isEmpty()) reportError("'-Xrelease=${releaseTarget}' option is not supported by used JDK: ${jdkHome?.path}") + if (isEmpty()) reportError("'-Xrelease=${jdkRelease}' option is not supported by used JDK: ${jdkHome?.path}") } } @@ -180,12 +180,12 @@ class CliJavaModuleFinder( } } } else { - if (this.releaseTarget > 8 && ctSymRootFolder != null) { - ctSymRootFolder!!.findChild(codeFor(releaseTarget) + if (!isCompilationJDK12OrLater) "-modules" else "")?.apply { + if (this.jdkRelease!! > 8 && ctSymRootFolder != null) { + ctSymRootFolder!!.findChild(codeFor(jdkRelease) + if (!isCompilationJDK12OrLater) "-modules" else "")?.apply { children.forEach { result[it.name] = it } - } ?: reportError("Can't find modules signatures in `ct.sym` file for `-Xrelease=$releaseTarget` in ${ctSymFile!!.path}") + } ?: reportError("Can't find modules signatures in `ct.sym` file for `-Xrelease=$jdkRelease` in ${ctSymFile!!.path}") } } return result