langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/TagletManager.java
--- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/TagletManager.java Thu Jun 09 19:06:36 2016 +0000
+++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/TagletManager.java Thu Jun 09 23:24:05 2016 -0700
@@ -31,6 +31,7 @@
import javax.lang.model.element.Element;
import javax.lang.model.element.ExecutableElement;
+import javax.lang.model.element.ModuleElement;
import javax.lang.model.element.PackageElement;
import javax.lang.model.element.TypeElement;
import javax.lang.model.element.VariableElement;
@@ -81,6 +82,11 @@
private final LinkedHashMap<String,Taglet> customTags;
/**
+ * The array of custom tags that can appear in modules.
+ */
+ private List<Taglet> moduleTags;
+
+ /**
* The array of custom tags that can appear in packages.
*/
private List<Taglet> packageTags;
@@ -373,6 +379,14 @@
}
new SimpleElementVisitor9<Void, Void>() {
@Override @DefinedBy(Api.LANGUAGE_MODEL)
+ public Void visitModule(ModuleElement e, Void p) {
+ if (!taglet.inModule()) {
+ printTagMisuseWarn(utils.getCommentHelper(e), taglet, tag, "module");
+ }
+ return null;
+ }
+
+ @Override @DefinedBy(Api.LANGUAGE_MODEL)
public Void visitPackage(PackageElement e, Void p) {
if (!taglet.inPackage()) {
printTagMisuseWarn(utils.getCommentHelper(e), taglet, tag, "package");
@@ -435,6 +449,9 @@
if (taglet.inOverview()) {
locationsSet.add("overview");
}
+ if (taglet.inModule()) {
+ locationsSet.add("module");
+ }
if (taglet.inPackage()) {
locationsSet.add("package");
}
@@ -471,6 +488,19 @@
/**
* Return the array of <code>Taglet</code>s that can
+ * appear in modules.
+ * @return the array of <code>Taglet</code>s that can
+ * appear in modules.
+ */
+ public List<Taglet> getModuleCustomTaglets() {
+ if (moduleTags == null) {
+ initCustomTaglets();
+ }
+ return moduleTags;
+ }
+
+ /**
+ * Return the array of <code>Taglet</code>s that can
* appear in packages.
* @return the array of <code>Taglet</code>s that can
* appear in packages.
@@ -555,6 +585,8 @@
case CLASS:
case ENUM:
return getTypeCustomTaglets();
+ case MODULE:
+ return getModuleCustomTaglets();
case PACKAGE:
return getPackageCustomTaglets();
case OTHER:
@@ -608,6 +640,7 @@
*/
private void initCustomTaglets() {
+ moduleTags = new ArrayList<>();
packageTags = new ArrayList<>();
typeTags = new ArrayList<>();
fieldTags = new ArrayList<>();
@@ -617,6 +650,9 @@
overviewTags = new ArrayList<>();
for (Taglet current : customTags.values()) {
+ if (current.inModule() && !current.isInlineTag()) {
+ moduleTags.add(current);
+ }
if (current.inPackage() && !current.isInlineTag()) {
packageTags.add(current);
}
@@ -666,9 +702,9 @@
addStandardTaglet(!nosince, new SimpleTaglet(SINCE.tagName, message.getText("doclet.Since"),
SimpleTaglet.ALL));
addStandardTaglet(showversion, new SimpleTaglet(VERSION.tagName, message.getText("doclet.Version"),
- SimpleTaglet.PACKAGE + SimpleTaglet.TYPE + SimpleTaglet.OVERVIEW));
+ SimpleTaglet.MODULE + SimpleTaglet.PACKAGE + SimpleTaglet.TYPE + SimpleTaglet.OVERVIEW));
addStandardTaglet(showauthor, new SimpleTaglet(AUTHOR.tagName, message.getText("doclet.Author"),
- SimpleTaglet.PACKAGE + SimpleTaglet.TYPE + SimpleTaglet.OVERVIEW));
+ SimpleTaglet.MODULE + SimpleTaglet.PACKAGE + SimpleTaglet.TYPE + SimpleTaglet.OVERVIEW));
addStandardTaglet(new SimpleTaglet(SERIAL_DATA.tagName, message.getText("doclet.SerialData"),
SimpleTaglet.EXCLUDED));
addStandardTaglet(new SimpleTaglet(HIDDEN.tagName, message.getText("doclet.Hidden"),