-Xjdk-release. Review fixes. Pass nullable jdkRelease

This commit is contained in:
Mikhael Bogdanov
2021-12-03 14:47:41 +01:00
committed by Space
parent a6052dce44
commit 9221810d7f
3 changed files with 12 additions and 12 deletions
@@ -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
@@ -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)
@@ -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<VirtualFile> {
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