diff options
author | Tobias Thierer <tobiast@google.com> | 2018-03-27 11:46:48 +0100 |
---|---|---|
committer | Tobias Thierer <tobiast@google.com> | 2018-03-27 19:17:37 +0000 |
commit | 3b42d11dac232f45e9fb4f2bcc0fdb7322eaaa90 (patch) | |
tree | 78a42bd6b09a862bfec0a65beaf2f8f54c521603 | |
parent | 21d5ec9f070a5709fd8183c106840c13c0182a29 (diff) | |
download | jdk9_langtools-main.tar.gz |
Due to a bug [1] javadoc -source 1.9 --patch-module ... crashed 100% of the
time; this bug was fixed [2] in upstream OpenJDK 9 for the logic in
jdk.javadoc.internal. However, there is near-duplicate legacy logic in
com.sun.tools.javadoc for which the bug has not yet been fixed upstream;
this legacy logic is invoked when processing legacy doclets
implementations (such as Droiddoc) that do not extend the Doclet class.
This CL ports the upstream fix to the legacy code path; note that in the
legacy code, alias options (example: --class-path vs. -classpath vs. -cp)
are treated as logically separate options with their own names whereas
in the non-legacy codepath these have been refactored to be represented
as a single Option where one of those names (the first) is the "primaryName".
Test: In a local client with other patches applied to droiddoc.mk and
droiddoc.go, "make docs" doesn't exhibit the early crash indicated
in http://b/74381003#comment2 . There are currently still other
blockers for droiddoc support for language level 9 sources, so a
complete "make docs" run has not yet been completed.
Bug: 74381003
[1] https://bugs.openjdk.java.net/browse/JDK-8166379
[2] http://hg.openjdk.java.net/jdk9/dev/langtools/rev/ed2e9ef4ce42
Change-Id: I54fcecd12eab1595822f24b170a8511b7635c50a
-rw-r--r-- | src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/Start.java | 11 | ||||
-rw-r--r-- | src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/ToolOption.java | 76 |
2 files changed, 45 insertions, 42 deletions
diff --git a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/Start.java b/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/Start.java index 86bf750fc..92d9583d6 100644 --- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/Start.java +++ b/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/Start.java @@ -580,6 +580,17 @@ public class Start extends ToolOption.Helper { public void put(String name, String value) { compOpts.put(name, value); } + + @Override + public void remove(String name) { + compOpts.remove(name); + } + + @Override + public boolean handleFileManagerOption(com.sun.tools.javac.main.Option option, String value) { + fileManagerOpts.put(option, value); + return true; + } }; } } diff --git a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/ToolOption.java b/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/ToolOption.java index e84e65950..7f70d9b27 100644 --- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/ToolOption.java +++ b/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/ToolOption.java @@ -51,92 +51,85 @@ public enum ToolOption { BOOTCLASSPATH("-bootclasspath", true) { @Override - public void process(Helper helper, String arg) { - helper.setFileManagerOpt(Option.BOOT_CLASS_PATH, arg); + public void process(Helper helper, String arg) throws InvalidValueException { + Option.BOOT_CLASS_PATH.process(helper.getOptionHelper(), opt, arg); } }, CLASSPATH("-classpath", true) { @Override - public void process(Helper helper, String arg) { - helper.setFileManagerOpt(Option.CLASS_PATH, arg); + public void process(Helper helper, String arg) throws InvalidValueException { + Option.CLASS_PATH.process(helper.getOptionHelper(), opt, arg); } }, CP("-cp", true) { @Override - public void process(Helper helper, String arg) { - helper.setFileManagerOpt(Option.CLASS_PATH, arg); + public void process(Helper helper, String arg) throws InvalidValueException { + Option.CLASS_PATH.process(helper.getOptionHelper(), opt, arg); } }, CLASS_PATH("--class-path", true) { @Override - public void process(Helper helper, String arg) { - helper.setFileManagerOpt(Option.CLASS_PATH, arg); + public void process(Helper helper, String arg) throws InvalidValueException { + Option.CLASS_PATH.process(helper.getOptionHelper(), opt, arg); } }, EXTDIRS("-extdirs", true) { @Override - public void process(Helper helper, String arg) { - helper.setFileManagerOpt(Option.EXTDIRS, arg); + public void process(Helper helper, String arg) throws InvalidValueException { + Option.EXTDIRS.process(helper.getOptionHelper(), opt, arg); } }, SOURCEPATH("-sourcepath", true) { @Override - public void process(Helper helper, String arg) { - helper.setFileManagerOpt(Option.SOURCE_PATH, arg); + public void process(Helper helper, String arg) throws InvalidValueException { + Option.SOURCE_PATH.process(helper.getOptionHelper(), opt, arg); } }, SOURCE_PATH("--source-path", true) { @Override - public void process(Helper helper, String arg) { - helper.setFileManagerOpt(Option.SOURCE_PATH, arg); - } - }, - - SYSCLASSPATH("-sysclasspath", true) { - @Override - public void process(Helper helper, String arg) { - helper.setFileManagerOpt(Option.BOOT_CLASS_PATH, arg); + public void process(Helper helper, String arg) throws InvalidValueException { + Option.SOURCE_PATH.process(helper.getOptionHelper(), opt, arg); } }, MODULE_SOURCE_PATH("--module-source-path", true) { @Override - public void process(Helper helper, String arg) { - helper.setFileManagerOpt(Option.MODULE_SOURCE_PATH, arg); + public void process(Helper helper, String arg) throws InvalidValueException { + Option.MODULE_SOURCE_PATH.process(helper.getOptionHelper(), opt, arg); } }, UPGRADE_MODULE_PATH("--upgrade-module-path", true) { @Override - public void process(Helper helper, String arg) { - helper.setFileManagerOpt(Option.UPGRADE_MODULE_PATH, arg); + public void process(Helper helper, String arg) throws InvalidValueException { + Option.UPGRADE_MODULE_PATH.process(helper.getOptionHelper(), opt, arg); } }, SYSTEM_("--system", true) { @Override - public void process(Helper helper, String arg) { - helper.setFileManagerOpt(Option.SYSTEM, arg); + public void process(Helper helper, String arg) throws InvalidValueException { + Option.SYSTEM.process(helper.getOptionHelper(), opt, arg); } }, MODULE_PATH("--module-path", true) { @Override - public void process(Helper helper, String arg) { - helper.setFileManagerOpt(Option.MODULE_PATH, arg); + public void process(Helper helper, String arg) throws InvalidValueException { + Option.MODULE_PATH.process(helper.getOptionHelper(), opt, arg); } }, P("-p", true) { @Override - public void process(Helper helper, String arg) { - helper.setFileManagerOpt(Option.MODULE_PATH, arg); + public void process(Helper helper, String arg) throws InvalidValueException { + Option.MODULE_PATH.process(helper.getOptionHelper(), opt, arg); } }, @@ -156,37 +149,36 @@ public enum ToolOption { ENCODING("-encoding", true) { @Override - public void process(Helper helper, String arg) { - helper.encoding = arg; - helper.setCompilerOpt(opt, arg); + public void process(Helper helper, String arg) throws InvalidValueException { + Option.ENCODING.process(helper.getOptionHelper(), opt, arg); } }, RELEASE("--release", true) { @Override - public void process(Helper helper, String arg) { - helper.setCompilerOpt(opt, arg); + public void process(Helper helper, String arg) throws InvalidValueException { + Option.RELEASE.process(helper.getOptionHelper(), opt, arg); } }, SOURCE("-source", true) { @Override - public void process(Helper helper, String arg) { - helper.setCompilerOpt(opt, arg); + public void process(Helper helper, String arg) throws InvalidValueException { + Option.SOURCE.process(helper.getOptionHelper(), opt, arg); } }, XMAXERRS("-Xmaxerrs", true) { @Override - public void process(Helper helper, String arg) { - helper.setCompilerOpt(opt, arg); + public void process(Helper helper, String arg) throws InvalidValueException { + Option.XMAXERRS.process(helper.getOptionHelper(), opt, arg); } }, XMAXWARNS("-Xmaxwarns", true) { @Override - public void process(Helper helper, String arg) { - helper.setCompilerOpt(opt, arg); + public void process(Helper helper, String arg) throws InvalidValueException { + Option.XMAXWARNS.process(helper.getOptionHelper(), opt, arg); } }, |