aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Thierer <tobiast@google.com>2018-03-27 11:46:48 +0100
committerTobias Thierer <tobiast@google.com>2018-03-27 19:17:37 +0000
commit3b42d11dac232f45e9fb4f2bcc0fdb7322eaaa90 (patch)
tree78a42bd6b09a862bfec0a65beaf2f8f54c521603
parent21d5ec9f070a5709fd8183c106840c13c0182a29 (diff)
downloadjdk9_langtools-master.tar.gz
ANDROID: Port fix for JDK-8166379 to legacy javadoc code path.HEADmastermain
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.java11
-rw-r--r--src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/ToolOption.java76
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);
}
},