Fix depth-first search for Java 9 modules

To compute modules to be added to compilation roots in
JavaModuleGraph.getAllDependencies, we should look not only for
transitive requirements of root modules, but for transitive requirements
of _root modules' requirements_. The same logic applies to
JavaModuleGraph.reads. In other words, when looking for a path in the
module graph between two modules, the first edge's transitiveness
doesn't matter, but all other edges after the first must be transitive.

There was also a stupid bug in dfs in
JavaModuleGraph.getAllDependencies: we continued the DFS only if the
module _was not_ added to the "visited" set ("add" returns true if the
element was added successfully)

 #KT-18598 In Progress
This commit is contained in:
Alexander Udalov
2017-06-28 16:13:14 +03:00
parent 72f37a278c
commit 5192f946c5
22 changed files with 135 additions and 4 deletions

View File

@@ -0,0 +1,4 @@
module moduleD {
requires moduleC;
requires moduleB;
}