8182416: Clean up module-info.java like move requires transitive adjacent to exports

Reviewed-by: alanb
This commit is contained in:
Mandy Chung 2017-06-17 11:50:45 -07:00
parent beba252b47
commit 960807e246
6 changed files with 75 additions and 44 deletions

View file

@ -23,16 +23,18 @@
* questions. * questions.
*/ */
/** /**
* Defines the Language Model, Annotation Processing, and Java Compiler APIs. * Defines the Language Model, Annotation Processing, and Java Compiler APIs.
* <P> * <p>
* These APIs model declarations and types of the Java programming language, * These APIs model declarations and types of the Java programming language,
* and define interfaces for tools such as compilers which can be invoked * and define interfaces for tools such as compilers which can be invoked
* from a program. * from a program.
* * <p>
* @moduleGraph * This module is upgradeble.
* @since 9 *
*/ * @moduleGraph
* @since 9
*/
module java.compiler { module java.compiler {
exports javax.annotation.processing; exports javax.annotation.processing;
exports javax.lang.model; exports javax.lang.model;

View file

@ -88,6 +88,7 @@ module jdk.compiler {
exports com.sun.source.tree; exports com.sun.source.tree;
exports com.sun.source.util; exports com.sun.source.util;
exports com.sun.tools.javac; exports com.sun.tools.javac;
exports com.sun.tools.doclint to exports com.sun.tools.doclint to
jdk.javadoc; jdk.javadoc;
exports com.sun.tools.javac.api to exports com.sun.tools.javac.api to
@ -127,16 +128,16 @@ module jdk.compiler {
uses com.sun.source.util.Plugin; uses com.sun.source.util.Plugin;
uses com.sun.tools.javac.platform.PlatformProvider; uses com.sun.tools.javac.platform.PlatformProvider;
provides java.util.spi.ToolProvider provides java.util.spi.ToolProvider with
with com.sun.tools.javac.main.JavacToolProvider; com.sun.tools.javac.main.JavacToolProvider;
provides com.sun.tools.javac.platform.PlatformProvider provides com.sun.tools.javac.platform.PlatformProvider with
with com.sun.tools.javac.platform.JDKPlatformProvider; com.sun.tools.javac.platform.JDKPlatformProvider;
provides javax.tools.JavaCompiler provides javax.tools.JavaCompiler with
with com.sun.tools.javac.api.JavacTool; com.sun.tools.javac.api.JavacTool;
provides javax.tools.Tool provides javax.tools.Tool with
with com.sun.tools.javac.api.JavacTool; com.sun.tools.javac.api.JavacTool;
} }

View file

@ -58,9 +58,10 @@
* @since 9 * @since 9
*/ */
module jdk.javadoc { module jdk.javadoc {
requires java.xml;
requires transitive java.compiler; requires transitive java.compiler;
requires transitive jdk.compiler; requires transitive jdk.compiler;
requires java.xml;
exports com.sun.javadoc; exports com.sun.javadoc;
exports com.sun.tools.doclets; exports com.sun.tools.doclets;
@ -69,13 +70,13 @@ module jdk.javadoc {
exports jdk.javadoc.doclet; exports jdk.javadoc.doclet;
provides java.util.spi.ToolProvider provides java.util.spi.ToolProvider with
with jdk.javadoc.internal.tool.JavadocToolProvider; jdk.javadoc.internal.tool.JavadocToolProvider;
provides javax.tools.DocumentationTool provides javax.tools.DocumentationTool with
with jdk.javadoc.internal.api.JavadocTool; jdk.javadoc.internal.api.JavadocTool;
provides javax.tools.Tool provides javax.tools.Tool with
with jdk.javadoc.internal.api.JavadocTool; jdk.javadoc.internal.api.JavadocTool;
} }

View file

@ -203,21 +203,43 @@ public class ModuleInfoBuilder {
writer.format("%smodule %s {%n", open ? "open " : "", md.name()); writer.format("%smodule %s {%n", open ? "open " : "", md.name());
Map<String, Module> modules = configuration.getModules(); Map<String, Module> modules = configuration.getModules();
// first print the JDK modules
md.requires().stream() // first print requires
.filter(req -> !req.name().equals("java.base")) // implicit requires Set<Requires> reqs = md.requires().stream()
.sorted(Comparator.comparing(Requires::name)) .filter(req -> !req.name().equals("java.base") && req.modifiers().isEmpty())
.forEach(req -> writer.format(" requires %s;%n", .collect(Collectors.toSet());
toString(req.modifiers(), req.name()))); reqs.stream()
.sorted(Comparator.comparing(Requires::name))
.forEach(req -> writer.format(" requires %s;%n",
toString(req.modifiers(), req.name())));
if (!reqs.isEmpty()) {
writer.println();
}
// requires transitive
reqs = md.requires().stream()
.filter(req -> !req.name().equals("java.base") && !req.modifiers().isEmpty())
.collect(Collectors.toSet());
reqs.stream()
.sorted(Comparator.comparing(Requires::name))
.forEach(req -> writer.format(" requires %s;%n",
toString(req.modifiers(), req.name())));
if (!reqs.isEmpty()) {
writer.println();
}
if (!open) { if (!open) {
md.exports().stream() md.exports().stream()
.peek(exp -> { .peek(exp -> {
if (exp.isQualified()) if (exp.isQualified())
throw new InternalError(md.name() + " qualified exports: " + exp); throw new InternalError(md.name() + " qualified exports: " + exp);
}) })
.sorted(Comparator.comparing(Exports::source)) .sorted(Comparator.comparing(Exports::source))
.forEach(exp -> writer.format(" exports %s;%n", exp.source())); .forEach(exp -> writer.format(" exports %s;%n", exp.source()));
if (!md.exports().isEmpty()) {
writer.println();
}
} }
md.provides().stream() md.provides().stream()
@ -228,8 +250,11 @@ public class ModuleInfoBuilder {
String.format(" provides %s with%n", String.format(" provides %s with%n",
p.service().replace('$', '.')), p.service().replace('$', '.')),
";"))) ";")))
.forEach(writer::println); .forEach(writer::println);
if (!md.provides().isEmpty()) {
writer.println();
}
writer.println("}"); writer.println("}");
} }

View file

@ -59,6 +59,7 @@
module jdk.jdeps { module jdk.jdeps {
requires java.compiler; requires java.compiler;
requires jdk.compiler; requires jdk.compiler;
exports com.sun.tools.classfile to jdk.jlink; exports com.sun.tools.classfile to jdk.jlink;
provides java.util.spi.ToolProvider with provides java.util.spi.ToolProvider with

View file

@ -65,27 +65,28 @@
* @since 9 * @since 9
*/ */
module jdk.jshell { module jdk.jshell {
requires transitive java.compiler;
requires transitive jdk.jdi;
requires transitive java.prefs;
requires java.logging; requires java.logging;
requires jdk.compiler; requires jdk.compiler;
requires jdk.internal.le;
requires jdk.internal.ed; requires jdk.internal.ed;
requires jdk.internal.le;
requires jdk.internal.opt; requires jdk.internal.opt;
requires transitive java.compiler;
requires transitive java.prefs;
requires transitive jdk.jdi;
exports jdk.jshell; exports jdk.jshell;
exports jdk.jshell.spi;
exports jdk.jshell.execution; exports jdk.jshell.execution;
exports jdk.jshell.spi;
exports jdk.jshell.tool; exports jdk.jshell.tool;
uses jdk.jshell.spi.ExecutionControlProvider; uses jdk.jshell.spi.ExecutionControlProvider;
uses jdk.internal.editor.spi.BuildInEditorProvider; uses jdk.internal.editor.spi.BuildInEditorProvider;
provides javax.tools.Tool provides javax.tools.Tool with
with jdk.internal.jshell.tool.JShellToolProvider; jdk.internal.jshell.tool.JShellToolProvider;
provides jdk.jshell.spi.ExecutionControlProvider provides jdk.jshell.spi.ExecutionControlProvider with
with jdk.jshell.execution.JdiExecutionControlProvider, jdk.jshell.execution.JdiExecutionControlProvider,
jdk.jshell.execution.LocalExecutionControlProvider, jdk.jshell.execution.LocalExecutionControlProvider,
jdk.jshell.execution.FailOverExecutionControlProvider; jdk.jshell.execution.FailOverExecutionControlProvider;
} }