From 848be226eddef60cb83cc5cc805ad00d59bc62f3 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Fri, 22 Sep 2017 14:43:36 +0300 Subject: [PATCH] Minor, invert JavaModule.isBinary -> isSourceModule --- .../cli/jvm/compiler/ClasspathRootsResolver.kt | 4 +++- .../cli/jvm/modules/CliJavaModuleResolver.kt | 4 ++-- .../kotlin/resolve/jvm/modules/JavaModule.kt | 15 ++++++++------- 3 files changed, 13 insertions(+), 10 deletions(-) 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 b154fc080f6..5b2d18a2e90 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 @@ -161,7 +161,9 @@ class ClasspathRootsResolver( } private fun addModularRoots(modules: List, result: MutableList) { - val sourceModules = modules.filterIsInstance().filterNot(JavaModule::isBinary) + // In current implementation, at most one source module is supported. This can be relaxed in the future if we support another + // compilation mode, similar to java's --module-source-path + val sourceModules = modules.filterIsInstance().filter(JavaModule::isSourceModule) if (sourceModules.size > 1) { for (module in sourceModules) { report(ERROR, "Too many source module declarations found", module.moduleInfoFile) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/modules/CliJavaModuleResolver.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/modules/CliJavaModuleResolver.kt index d3550ba7109..24fab9f872e 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/modules/CliJavaModuleResolver.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/modules/CliJavaModuleResolver.kt @@ -32,12 +32,12 @@ class CliJavaModuleResolver( private val systemModules: List ) : JavaModuleResolver { init { - assert(userModules.count { !it.isBinary } <= 1) { + assert(userModules.count(JavaModule::isSourceModule) <= 1) { "Modules computed by ClasspathRootsResolver cannot have more than one source module: $userModules" } } - private val sourceModule: JavaModule? = userModules.firstOrNull { !it.isBinary } + private val sourceModule: JavaModule? = userModules.firstOrNull(JavaModule::isSourceModule) private fun findJavaModule(file: VirtualFile): JavaModule? { if (file.fileSystem.protocol == StandardFileSystems.JRT_PROTOCOL) { diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/modules/JavaModule.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/modules/JavaModule.kt index da76e58a924..bfe8bbbb9bb 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/modules/JavaModule.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/modules/JavaModule.kt @@ -16,7 +16,7 @@ package org.jetbrains.kotlin.resolve.jvm.modules -import com.intellij.ide.highlighter.JavaClassFileType +import com.intellij.ide.highlighter.JavaFileType import com.intellij.openapi.vfs.VirtualFile import org.jetbrains.kotlin.name.FqName @@ -41,10 +41,11 @@ interface JavaModule { val moduleInfoFile: VirtualFile? /** - * `true` if this module is either an automatic module on the module path, or an explicit module loaded from module-info.class. - * `false` if this module is an explicit module loaded from module-info.java. + * `true` if this module is an explicit module loaded from module-info.java, `false` otherwise. This usually corresponds to the module + * currently being compiled. + * Note that in case of partial/incremental compilation, the source module may contain both binary roots and non-binary roots. */ - val isBinary: Boolean + val isSourceModule: Boolean /** * `true` if this module exports the package with the given FQ name to all dependent modules. @@ -70,7 +71,7 @@ interface JavaModule { class Automatic(override val name: String, override val moduleRoots: List) : JavaModule { override val moduleInfoFile: VirtualFile? get() = null - override val isBinary: Boolean get() = true + override val isSourceModule: Boolean get() = false override fun exports(packageFqName: FqName): Boolean = true @@ -87,8 +88,8 @@ interface JavaModule { override val name: String get() = moduleInfo.moduleName - override val isBinary: Boolean - get() = moduleInfoFile.fileType == JavaClassFileType.INSTANCE + override val isSourceModule: Boolean + get() = moduleInfoFile.fileType == JavaFileType.INSTANCE override fun exports(packageFqName: FqName): Boolean { return moduleInfo.exports.any { (fqName, toModules) ->