--- old/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TagletWriterImpl.java 2019-10-30 16:23:52.859748353 -0700 +++ new/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TagletWriterImpl.java 2019-10-30 16:23:52.499748366 -0700 @@ -28,13 +28,20 @@ import java.util.List; import javax.lang.model.element.Element; +import javax.lang.model.element.ElementKind; +import javax.lang.model.element.ExecutableElement; +import javax.lang.model.element.ModuleElement; +import javax.lang.model.element.Name; +import javax.lang.model.element.PackageElement; import javax.lang.model.element.TypeElement; import javax.lang.model.element.VariableElement; import javax.lang.model.type.TypeMirror; -import javax.lang.model.util.SimpleElementVisitor9; +import javax.lang.model.util.SimpleElementVisitor14; import com.sun.source.doctree.DocTree; +import com.sun.source.doctree.DocTree.Kind; import com.sun.source.doctree.IndexTree; +import com.sun.source.doctree.ParamTree; import com.sun.source.doctree.SystemPropertyTree; import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; @@ -190,15 +197,19 @@ /** * {@inheritDoc} */ + @SuppressWarnings("preview") public Content paramTagOutput(Element element, DocTree paramTag, String paramName) { ContentBuilder body = new ContentBuilder(); CommentHelper ch = utils.getCommentHelper(element); - body.add(HtmlTree.CODE(new RawHtml(paramName))); + // define id attributes for state components so that generated descriptions may refer to them + boolean defineID = (element.getKind() == ElementKind.RECORD) + && (paramTag instanceof ParamTree) && !((ParamTree) paramTag).isTypeParameter(); + Content nameTree = new StringContent(paramName); + body.add(HtmlTree.CODE(defineID ? HtmlTree.A_ID("param-" + paramName, nameTree) : nameTree)); body.add(" - "); List description = ch.getDescription(configuration, paramTag); body.add(htmlWriter.commentTagsToContent(paramTag, element, description, false, inSummary)); - HtmlTree result = HtmlTree.DD(body); - return result; + return HtmlTree.DD(body); } /** @@ -409,6 +420,7 @@ return configuration; } + @SuppressWarnings("preview") private Content createAnchorAndSearchIndex(Element element, String tagText, String desc){ Content result = null; if (isFirstSentence && inSummary) { @@ -427,7 +439,7 @@ si.setDescription(desc); si.setUrl(htmlWriter.path.getPath() + "#" + anchorName); DocPaths docPaths = configuration.docPaths; - new SimpleElementVisitor9() { + new SimpleElementVisitor14() { @Override public Void visitVariable(VariableElement e, Void p) { TypeElement te = utils.getEnclosingTypeElement(e);