--- a/langtools/test/jdk/javadoc/tool/modules/ModuleTestBase.java Thu Mar 16 17:13:10 2017 -0700
+++ b/langtools/test/jdk/javadoc/tool/modules/ModuleTestBase.java Thu Mar 16 18:50:50 2017 -0700
@@ -27,7 +27,7 @@
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
-import java.util.Collections;
+import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Set;
@@ -158,6 +158,12 @@
}
}
+ void checkTypesSelected(String... args) throws Exception {
+ for (String arg : args) {
+ checkDocletOutputPresent("Selected", ElementKind.CLASS, arg);
+ }
+ }
+
void checkMembersSelected(String... args) throws Exception {
for (String arg : args) {
checkDocletOutputPresent("Selected", ElementKind.METHOD, arg);
@@ -280,6 +286,17 @@
StringWriter sw = new StringWriter();
PrintWriter ps = new PrintWriter(sw);
+ DocletEnvironment docEnv = null;
+
+ boolean hasDocComments = false;
+
+ String hasDocComments(Element e) {
+ String comment = docEnv.getElementUtils().getDocComment(e);
+ return comment != null && !comment.isEmpty()
+ ? "hasDocComments"
+ : "noDocComments";
+ }
+
// csv style output, for simple regex verification
void printDataSet(String header, Set<? extends Element> set) {
for (Element e : set) {
@@ -290,7 +307,12 @@
ps.print(FS);
ps.print(e.getKind());
ps.print(FS);
- ps.println(e.getQualifiedName());
+ ps.print(e.getQualifiedName());
+ if (hasDocComments) {
+ ps.print(FS);
+ ps.print(hasDocComments(e));
+ }
+ ps.println();
return null;
}
@@ -299,7 +321,12 @@
ps.print(FS);
ps.print(e.getKind());
ps.print(FS);
- ps.println(e.getQualifiedName());
+ ps.print(e.getQualifiedName());
+ if (hasDocComments) {
+ ps.print(FS);
+ ps.print(hasDocComments(e));
+ }
+ ps.println();
return null;
}
@@ -308,7 +335,12 @@
ps.print(FS);
ps.print(ElementKind.CLASS);
ps.print(FS);
- ps.println(e.getQualifiedName());
+ ps.print(e.getQualifiedName());
+ if (hasDocComments) {
+ ps.print(FS);
+ ps.print(hasDocComments(e));
+ }
+ ps.println();
return null;
}
@@ -338,7 +370,12 @@
ps.print(FS);
ps.print(fqn);
ps.print(".");
- ps.println(e.getSimpleName());
+ ps.print(e.getSimpleName());
+ if (hasDocComments) {
+ ps.print(FS);
+ ps.print(hasDocComments(e));
+ }
+ ps.println();
return null;
}
}.visit(e);
@@ -347,6 +384,7 @@
@Override
public boolean run(DocletEnvironment docenv) {
+ this.docEnv = docenv;
ps.println("ModuleMode" + FS + docenv.getModuleMode());
printDataSet("Specified", docenv.getSpecifiedElements());
printDataSet("Included", docenv.getIncludedElements());
@@ -369,7 +407,9 @@
addEnclosedElements(docenv, result, me);
}
for (PackageElement pe : ElementFilter.packagesIn(elements)) {
- addEnclosedElements(docenv, result, docenv.getElementUtils().getModuleOf(pe));
+ ModuleElement mdle = docenv.getElementUtils().getModuleOf(pe);
+ if (mdle != null)
+ addEnclosedElements(docenv, result, mdle);
addEnclosedElements(docenv, result, pe);
}
for (TypeElement te : ElementFilter.typesIn(elements)) {
@@ -390,7 +430,45 @@
@Override
public Set<Doclet.Option> getSupportedOptions() {
- return Collections.emptySet();
+ Option[] options = {
+ new Option() {
+ private final List<String> someOption = Arrays.asList(
+ "-hasDocComments"
+ );
+
+ @Override
+ public int getArgumentCount() {
+ return 0;
+ }
+
+ @Override
+ public String getDescription() {
+ return "print disposition of doc comments on an element";
+ }
+
+ @Override
+ public Option.Kind getKind() {
+ return Option.Kind.STANDARD;
+ }
+
+ @Override
+ public List<String> getNames() {
+ return someOption;
+ }
+
+ @Override
+ public String getParameters() {
+ return "flag";
+ }
+
+ @Override
+ public boolean process(String opt, List<String> arguments) {
+ hasDocComments = true;
+ return true;
+ }
+ }
+ };
+ return new HashSet<>(Arrays.asList(options));
}
@Override