From 3808ecbd1e1427510e2ac3e90090cf96f9c50e43 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Wed, 5 Jul 2017 16:38:21 +0300 Subject: [PATCH] Minor, return a set in JavaModuleGraph.getAllDependencies To prevent duplicate roots to be added --- .../kotlin/cli/jvm/compiler/ClasspathRootsResolver.kt | 3 +-- .../jetbrains/kotlin/resolve/jvm/modules/JavaModuleGraph.kt | 6 +++--- 2 files changed, 4 insertions(+), 5 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 40b18c71335..222a69ad725 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 @@ -191,8 +191,7 @@ internal class ClasspathRootsResolver( else -> computeDefaultRootModules() + additionalModules } - val allDependencies = javaModuleGraph.getAllDependencies(rootModules).toMutableList() - + val allDependencies = javaModuleGraph.getAllDependencies(rootModules) if (allDependencies.any { moduleName -> javaModuleFinder.findModule(moduleName) is JavaModule.Automatic }) { // According to java.lang.module javadoc, if at least one automatic module is added to the module graph, // all observable automatic modules should be added. diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/modules/JavaModuleGraph.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/modules/JavaModuleGraph.kt index fa95af796aa..4627072649a 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/modules/JavaModuleGraph.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/modules/JavaModuleGraph.kt @@ -22,8 +22,8 @@ class JavaModuleGraph(finder: JavaModuleFinder) { private val module: (String) -> JavaModule? = LockBasedStorageManager.NO_LOCKS.createMemoizedFunctionWithNullableValues(finder::findModule) - fun getAllDependencies(moduleNames: List): List { - val visited = moduleNames.toMutableSet() + fun getAllDependencies(moduleNames: List): LinkedHashSet { + val visited = LinkedHashSet(moduleNames) // Every module implicitly depends on java.base visited += "java.base" @@ -55,7 +55,7 @@ class JavaModuleGraph(finder: JavaModuleFinder) { } } - return visited.toList() + return visited } fun reads(moduleName: String, dependencyName: String): Boolean {