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 152f6e2e1e6..f02d9288501 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 @@ -144,7 +144,7 @@ internal class ClasspathRootsResolver( val rootModules = when { sourceModules.isNotEmpty() -> listOf(sourceModules.single().name) + additionalModules addAllModulePathToRoots -> modules.map(JavaModule::name) - else -> computeDefaultRootModules() + modules.map(JavaModule::name) + else -> computeDefaultRootModules() + additionalModules } // TODO: if at least one automatic module is added, add all automatic modules as per java.lang.module javadoc diff --git a/compiler/testData/javaModules/unnamedDoesNotReadNotAdded/moduleA/foo/Foo.java b/compiler/testData/javaModules/unnamedDoesNotReadNotAdded/moduleA/foo/Foo.java new file mode 100644 index 00000000000..7f566bafd45 --- /dev/null +++ b/compiler/testData/javaModules/unnamedDoesNotReadNotAdded/moduleA/foo/Foo.java @@ -0,0 +1,3 @@ +package foo; + +public class Foo {} diff --git a/compiler/testData/javaModules/unnamedDoesNotReadNotAdded/moduleA/module-info.java b/compiler/testData/javaModules/unnamedDoesNotReadNotAdded/moduleA/module-info.java new file mode 100644 index 00000000000..cbfe65e9b40 --- /dev/null +++ b/compiler/testData/javaModules/unnamedDoesNotReadNotAdded/moduleA/module-info.java @@ -0,0 +1,3 @@ +module moduleA { + exports foo; +} diff --git a/compiler/testData/javaModules/unnamedDoesNotReadNotAdded/moduleB.txt b/compiler/testData/javaModules/unnamedDoesNotReadNotAdded/moduleB.txt new file mode 100644 index 00000000000..ccb611253d8 --- /dev/null +++ b/compiler/testData/javaModules/unnamedDoesNotReadNotAdded/moduleB.txt @@ -0,0 +1,7 @@ +compiler/testData/javaModules/unnamedDoesNotReadNotAdded/moduleB/usage.kt:1:8: error: unresolved reference: foo +import foo.Foo + ^ +compiler/testData/javaModules/unnamedDoesNotReadNotAdded/moduleB/usage.kt:4:5: error: unresolved reference: Foo + Foo() + ^ +COMPILATION_ERROR diff --git a/compiler/testData/javaModules/unnamedDoesNotReadNotAdded/moduleB/usage.kt b/compiler/testData/javaModules/unnamedDoesNotReadNotAdded/moduleB/usage.kt new file mode 100644 index 00000000000..91c127ff438 --- /dev/null +++ b/compiler/testData/javaModules/unnamedDoesNotReadNotAdded/moduleB/usage.kt @@ -0,0 +1,5 @@ +import foo.Foo + +fun usage() { + Foo() +} diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/Java9ModulesIntegrationTest.kt b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/Java9ModulesIntegrationTest.kt index 39ee19fa7e5..b077063b794 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/Java9ModulesIntegrationTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/Java9ModulesIntegrationTest.kt @@ -101,4 +101,10 @@ class Java9ModulesIntegrationTest : AbstractKotlinCompilerIntegrationTest() { fun testJdkModulesFromUnnamed() { module("main") } + + fun testUnnamedDoesNotReadNotAdded() { + // Test that although we have moduleA in the module path, it's not in the module graph + // because we did not provide -Xadd-modules=moduleA + module("moduleB", listOf(module("moduleA")), addModules = emptyList()) + } }