8214126: Method signatures not formatted correctly in browser

Reviewed-by: jjg
This commit is contained in:
Hannes Wallnöfer 2019-06-04 16:33:37 +02:00
parent 4d08dd703e
commit 4b01aa4f71
41 changed files with 1305 additions and 883 deletions

@ -73,19 +73,6 @@ public abstract class AbstractExecutableMemberWriter extends AbstractMemberWrite
super(writer);
}
/**
* Add the type parameters for the executable member.
*
* @param member the member to write type parameters for.
* @param htmltree the content tree to which the parameters will be added.
*/
protected void addTypeParameters(ExecutableElement member, Content htmltree) {
Content typeParameters = getTypeParameters(member);
if (!typeParameters.isEmpty()) {
htmltree.add(typeParameters);
htmltree.add(Entity.NO_BREAK_SPACE);
}
}
/**
* Get the type parameters for the executable member.
@ -134,7 +121,7 @@ public abstract class AbstractExecutableMemberWriter extends AbstractMemberWrite
writer.getDocLink(context, te, ee,
name(ee), false));
Content code = HtmlTree.CODE(memberLink);
addParameters(ee, false, code, name(ee).length() - 1);
addParameters(ee, code);
tdSummary.add(code);
}
@ -174,7 +161,7 @@ public abstract class AbstractExecutableMemberWriter extends AbstractMemberWrite
*
* @param member the member to write receiver annotations for.
* @param rcvrType the receiver type.
* @param descList list of annotation description.
* @param annotationMirrors list of annotation descriptions.
* @param tree the content tree to which the information will be added.
*/
protected void addReceiverAnnotations(ExecutableElement member, TypeMirror rcvrType,
@ -195,66 +182,8 @@ public abstract class AbstractExecutableMemberWriter extends AbstractMemberWrite
* @param member the member to write parameters for.
* @param htmltree the content tree to which the parameters information will be added.
*/
protected void addParameters(ExecutableElement member, Content htmltree, int indentSize) {
addParameters(member, true, htmltree, indentSize);
}
/**
* Add all the parameters for the executable member.
*
* @param member the member to write parameters for.
* @param includeAnnotations true if annotation information needs to be added.
* @param htmltree the content tree to which the parameters information will be added.
*/
protected void addParameters(ExecutableElement member,
boolean includeAnnotations, Content htmltree, int indentSize) {
Content paramTree = new ContentBuilder();
String sep = "";
List<? extends VariableElement> parameters = member.getParameters();
CharSequence indent = makeSpace(indentSize + 1);
TypeMirror rcvrType = member.getReceiverType();
if (includeAnnotations && rcvrType != null && utils.isAnnotated(rcvrType)) {
List<? extends AnnotationMirror> annotationMirrors = rcvrType.getAnnotationMirrors();
addReceiverAnnotations(member, rcvrType, annotationMirrors, paramTree);
sep = "," + DocletConstants.NL + indent;
}
int paramstart;
for (paramstart = 0; paramstart < parameters.size(); paramstart++) {
paramTree.add(sep);
VariableElement param = parameters.get(paramstart);
if (param.getKind() != ElementKind.INSTANCE_INIT) {
if (includeAnnotations) {
boolean foundAnnotations =
writer.addAnnotationInfo(indent.length(),
member, param, paramTree);
if (foundAnnotations) {
paramTree.add(DocletConstants.NL);
paramTree.add(indent);
}
}
addParam(member, param,
(paramstart == parameters.size() - 1) && member.isVarArgs(), paramTree);
break;
}
}
for (int i = paramstart + 1; i < parameters.size(); i++) {
paramTree.add(",");
paramTree.add(DocletConstants.NL);
paramTree.add(indent);
if (includeAnnotations) {
boolean foundAnnotations =
writer.addAnnotationInfo(indent.length(), member, parameters.get(i),
paramTree);
if (foundAnnotations) {
paramTree.add(DocletConstants.NL);
paramTree.add(indent);
}
}
addParam(member, parameters.get(i), (i == parameters.size() - 1) && member.isVarArgs(),
paramTree);
}
protected void addParameters(ExecutableElement member, Content htmltree) {
Content paramTree = getParameters(member, false);
if (paramTree.isEmpty()) {
htmltree.add("()");
} else {
@ -266,30 +195,80 @@ public abstract class AbstractExecutableMemberWriter extends AbstractMemberWrite
}
/**
* Add exceptions for the executable member.
* Add all the parameters for the executable member.
*
* @param member the member to write parameters for.
* @param includeAnnotations true if annotation information needs to be added.
* @return the content tree containing the parameter information
*/
protected Content getParameters(ExecutableElement member, boolean includeAnnotations) {
Content paramTree = new ContentBuilder();
String sep = "";
List<? extends VariableElement> parameters = member.getParameters();
TypeMirror rcvrType = member.getReceiverType();
if (includeAnnotations && rcvrType != null && utils.isAnnotated(rcvrType)) {
List<? extends AnnotationMirror> annotationMirrors = rcvrType.getAnnotationMirrors();
addReceiverAnnotations(member, rcvrType, annotationMirrors, paramTree);
sep = "," + DocletConstants.NL;
}
int paramstart;
for (paramstart = 0; paramstart < parameters.size(); paramstart++) {
paramTree.add(sep);
VariableElement param = parameters.get(paramstart);
if (param.getKind() != ElementKind.INSTANCE_INIT) {
if (includeAnnotations) {
boolean foundAnnotations =
writer.addAnnotationInfo(param, paramTree);
if (foundAnnotations) {
paramTree.add(DocletConstants.NL);
}
}
addParam(member, param,
(paramstart == parameters.size() - 1) && member.isVarArgs(), paramTree);
break;
}
}
for (int i = paramstart + 1; i < parameters.size(); i++) {
paramTree.add(",");
paramTree.add(DocletConstants.NL);
if (includeAnnotations) {
boolean foundAnnotations =
writer.addAnnotationInfo(parameters.get(i),
paramTree);
if (foundAnnotations) {
paramTree.add(DocletConstants.NL);
}
}
addParam(member, parameters.get(i), (i == parameters.size() - 1) && member.isVarArgs(),
paramTree);
}
return paramTree;
}
/**
* Get a content tree containing the exception information for the executable member.
*
* @param member the member to write exceptions for.
* @param htmltree the content tree to which the exceptions information will be added.
* @return the content tree containing the exceptions information.
*/
protected void addExceptions(ExecutableElement member, Content htmltree, int indentSize) {
protected Content getExceptions(ExecutableElement member) {
List<? extends TypeMirror> exceptions = member.getThrownTypes();
Content htmltree = new ContentBuilder();
if (!exceptions.isEmpty()) {
CharSequence indent = makeSpace(indentSize + 1 - 7);
htmltree.add(DocletConstants.NL);
htmltree.add(indent);
htmltree.add("throws ");
indent = makeSpace(indentSize + 1);
Content link = writer.getLink(new LinkInfoImpl(configuration, MEMBER, exceptions.get(0)));
htmltree.add(link);
for(int i = 1; i < exceptions.size(); i++) {
htmltree.add(",");
htmltree.add(DocletConstants.NL);
htmltree.add(indent);
Content exceptionLink = writer.getLink(new LinkInfoImpl(configuration, MEMBER,
exceptions.get(i)));
htmltree.add(exceptionLink);
}
}
return htmltree;
}
protected TypeElement implementsMethodInIntfac(ExecutableElement method,

@ -46,12 +46,14 @@ import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
import jdk.javadoc.internal.doclets.formats.html.markup.Links;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.formats.html.markup.Table;
import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
import jdk.javadoc.internal.doclets.toolkit.Content;
import jdk.javadoc.internal.doclets.toolkit.MemberSummaryWriter;
import jdk.javadoc.internal.doclets.toolkit.Resources;
import jdk.javadoc.internal.doclets.toolkit.taglets.DeprecatedTaglet;
import jdk.javadoc.internal.doclets.toolkit.util.DocletConstants;
import jdk.javadoc.internal.doclets.toolkit.util.Utils;
import static javax.lang.model.element.Modifier.ABSTRACT;
@ -219,55 +221,6 @@ public abstract class AbstractMemberWriter implements MemberSummaryWriter {
*/
protected abstract Content getDeprecatedLink(Element member);
/**
* Add the member name to the content tree.
*
* @param name the member name to be added to the content tree.
* @param htmltree the content tree to which the name will be added.
*/
protected void addName(String name, Content htmltree) {
htmltree.add(name);
}
/**
* Add the modifier for the member. The modifiers are ordered as specified
* by <em>The Java Language Specification</em>.
*
* @param member the member for which the modifier will be added.
* @param htmltree the content tree to which the modifier information will be added.
*/
protected void addModifiers(Element member, Content htmltree) {
Set<Modifier> set = new TreeSet<>(member.getModifiers());
// remove the ones we really don't need
set.remove(NATIVE);
set.remove(SYNCHRONIZED);
set.remove(STRICTFP);
// According to JLS, we should not be showing public modifier for
// interface methods.
if ((utils.isField(member) || utils.isMethod(member))
&& ((writer instanceof ClassWriterImpl
&& utils.isInterface(((ClassWriterImpl) writer).getTypeElement()) ||
writer instanceof AnnotationTypeWriterImpl) )) {
// Remove the implicit abstract and public modifiers
if (utils.isMethod(member) &&
(utils.isInterface(member.getEnclosingElement()) ||
utils.isAnnotationType(member.getEnclosingElement()))) {
set.remove(ABSTRACT);
set.remove(PUBLIC);
}
if (!utils.isMethod(member)) {
set.remove(PUBLIC);
}
}
if (!set.isEmpty()) {
String mods = set.stream().map(Modifier::toString).collect(Collectors.joining(" "));
htmltree.add(mods);
htmltree.add(Entity.NO_BREAK_SPACE);
}
}
protected CharSequence makeSpace(int len) {
if (len <= 0) {
return "";
@ -563,4 +516,237 @@ public abstract class AbstractMemberWriter implements MemberSummaryWriter {
else
return HtmlTree.LI(HtmlStyle.blockList, memberTree);
}
/**
* A content builder for member signatures.
*/
class MemberSignature {
private Element element;
private Content typeParameters;
private Content returnType;
private Content parameters;
private Content exceptions;
// Threshold for length of type parameters before switching from inline to block representation.
private final static int TYPE_PARAMS_MAX_INLINE_LENGTH = 50;
// Threshold for combined length of modifiers, type params and return type before breaking
// it up with a line break before the return type.
private final static int RETURN_TYPE_MAX_LINE_LENGTH = 50;
/**
* Create a new member signature builder.
*
* @param element The element for which to create a signature.
*/
MemberSignature(Element element) {
this.element = element;
}
/**
* Add the type parameters for an executable member.
*
* @param typeParameters the content tree containing the type parameters to add.
* @return this MemberSignature instance
*/
MemberSignature addTypeParameters(Content typeParameters) {
this.typeParameters = typeParameters;
return this;
}
/**
* Add the return type for an executable member.
*
* @param returnType the content tree containing the return type to add.
* @return this MemberSignature instance
*/
MemberSignature addReturnType(Content returnType) {
this.returnType = returnType;
return this;
}
/**
* Add the type information for a non-executable member.
*
* @param type the type of the member.
* @return this MemberSignature instance
*/
MemberSignature addType(TypeMirror type) {
this.returnType = writer.getLink(new LinkInfoImpl(configuration, LinkInfoImpl.Kind.MEMBER, type));
return this;
}
/**
* Add the parameter information of an executable member.
*
* @param paramTree the content tree containing the parameter information.
* @return this MemberSignature instance
*/
MemberSignature addParameters(Content paramTree) {
this.parameters = paramTree;
return this;
}
/**
* Add the exception information of an executable member.
*
* @param exceptionTree the content tree containing the exception information
* @return this MemberSignature instance
*/
MemberSignature addExceptions(Content exceptionTree) {
this.exceptions = exceptionTree;
return this;
}
/**
* Return a HTML tree containing the member signature.
*
* @return a HTML tree containing the member signature
*/
Content toContent() {
Content content = new ContentBuilder();
// Position of last line separator.
int lastLineSeparator = 0;
// Annotations
Content annotationInfo = writer.getAnnotationInfo(element.getAnnotationMirrors(), true);
if (!annotationInfo.isEmpty()) {
content.add(HtmlTree.SPAN(HtmlStyle.annotations, annotationInfo));
lastLineSeparator = content.charCount();
}
// Modifiers
appendModifiers(content);
// Type parameters
if (typeParameters != null && !typeParameters.isEmpty()) {
lastLineSeparator = appendTypeParameters(content, lastLineSeparator);
}
// Return type
if (returnType != null) {
content.add(HtmlTree.SPAN(HtmlStyle.returnType, returnType));
content.add(Entity.NO_BREAK_SPACE);
}
// Name
HtmlTree nameSpan = new HtmlTree(HtmlTag.SPAN);
nameSpan.setStyle(HtmlStyle.memberName);
if (configuration.linksource) {
Content name = new StringContent(name(element));
writer.addSrcLink(element, name, nameSpan);
} else {
nameSpan.add(name(element));
}
content.add(nameSpan);
// Parameters and exceptions
if (parameters != null) {
appendParametersAndExceptions(content, lastLineSeparator);
}
return HtmlTree.DIV(HtmlStyle.memberSignature, content);
}
/**
* Add the modifier for the member. The modifiers are ordered as specified
* by <em>The Java Language Specification</em>.
*
* @param htmltree the content tree to which the modifier information will be added.
*/
private void appendModifiers(Content htmltree) {
Set<Modifier> set = new TreeSet<>(element.getModifiers());
// remove the ones we really don't need
set.remove(NATIVE);
set.remove(SYNCHRONIZED);
set.remove(STRICTFP);
// According to JLS, we should not be showing public modifier for
// interface methods.
if ((utils.isField(element) || utils.isMethod(element))
&& ((writer instanceof ClassWriterImpl
&& utils.isInterface(((ClassWriterImpl) writer).getTypeElement()) ||
writer instanceof AnnotationTypeWriterImpl) )) {
// Remove the implicit abstract and public modifiers
if (utils.isMethod(element) &&
(utils.isInterface(element.getEnclosingElement()) ||
utils.isAnnotationType(element.getEnclosingElement()))) {
set.remove(ABSTRACT);
set.remove(PUBLIC);
}
if (!utils.isMethod(element)) {
set.remove(PUBLIC);
}
}
if (!set.isEmpty()) {
String mods = set.stream().map(Modifier::toString).collect(Collectors.joining(" "));
htmltree.add(HtmlTree.SPAN(HtmlStyle.modifiers, new StringContent(mods)));
htmltree.add(Entity.NO_BREAK_SPACE);
}
}
/**
* Append the type parameter information to the HTML tree.
*
* @param htmltree the HTML tree
* @param lastLineSeparator index of last line separator in HTML tree
* @return the new index of the last line separator
*/
private int appendTypeParameters(Content htmltree, int lastLineSeparator) {
// Apply different wrapping strategies for type parameters
// depending of combined length of type parameters and return type.
int typeParamLength = typeParameters.charCount();
if (typeParamLength >= TYPE_PARAMS_MAX_INLINE_LENGTH) {
htmltree.add(HtmlTree.SPAN(HtmlStyle.typeParametersLong, typeParameters));
} else {
htmltree.add(HtmlTree.SPAN(HtmlStyle.typeParameters, typeParameters));
}
int lineLength = htmltree.charCount() - lastLineSeparator;
int newLastLineSeparator = lastLineSeparator;
// sum below includes length of modifiers plus type params added above
if (lineLength + returnType.charCount()> RETURN_TYPE_MAX_LINE_LENGTH) {
htmltree.add(DocletConstants.NL);
newLastLineSeparator = htmltree.charCount();
} else {
htmltree.add(Entity.NO_BREAK_SPACE);
}
return newLastLineSeparator;
}
/**
* Append the parameters and exceptions information to the HTML tree.
*
* @param htmltree the HTML tree
* @param lastLineSeparator the index of the last line separator in HTML tree
*/
private void appendParametersAndExceptions(Content htmltree, int lastLineSeparator) {
// Record current position for indentation of exceptions
int indentSize = htmltree.charCount() - lastLineSeparator;
if (parameters.isEmpty()) {
htmltree.add("()");
} else {
parameters.add(")");
htmltree.add(Entity.ZERO_WIDTH_SPACE);
htmltree.add("(");
htmltree.add(HtmlTree.SPAN(HtmlStyle.arguments, parameters));
}
// Exceptions
if (exceptions != null && !exceptions.isEmpty()) {
CharSequence indent = makeSpace(indentSize + 1 - 7);
htmltree.add(DocletConstants.NL);
htmltree.add(indent);
htmltree.add("throws ");
htmltree.add(HtmlTree.SPAN(HtmlStyle.exceptions, exceptions));
}
}
}
}

@ -33,7 +33,6 @@ import javax.lang.model.type.TypeMirror;
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.formats.html.markup.Table;
@ -132,21 +131,9 @@ public class AnnotationTypeFieldWriterImpl extends AbstractMemberWriter
* {@inheritDoc}
*/
public Content getSignature(Element member) {
Content pre = new HtmlTree(HtmlTag.PRE);
writer.addAnnotationInfo(member, pre);
addModifiers(member, pre);
Content link =
writer.getLink(new LinkInfoImpl(configuration,
LinkInfoImpl.Kind.MEMBER, getType(member)));
pre.add(link);
pre.add(Entity.NO_BREAK_SPACE);
if (configuration.linksource) {
Content memberName = new StringContent(name(member));
writer.addSrcLink(member, memberName, pre);
} else {
addName(name(member), pre);
}
return pre;
return new MemberSignature(member)
.addType(getType(member))
.toContent();
}
/**

@ -31,11 +31,8 @@ import javax.lang.model.element.TypeElement;
import javax.lang.model.type.TypeMirror;
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.formats.html.markup.Table;
import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
import jdk.javadoc.internal.doclets.toolkit.AnnotationTypeRequiredMemberWriter;
@ -136,21 +133,9 @@ public class AnnotationTypeRequiredMemberWriterImpl extends AbstractMemberWriter
* {@inheritDoc}
*/
public Content getSignature(Element member) {
Content pre = new HtmlTree(HtmlTag.PRE);
writer.addAnnotationInfo(member, pre);
addModifiers(member, pre);
Content link =
writer.getLink(new LinkInfoImpl(configuration,
LinkInfoImpl.Kind.MEMBER, getType(member)));
pre.add(link);
pre.add(Entity.NO_BREAK_SPACE);
if (configuration.linksource) {
Content memberName = new StringContent(name(member));
writer.addSrcLink(member, memberName, pre);
} else {
addName(name(member), pre);
}
return pre;
return new MemberSignature(member)
.addType(getType(member))
.toContent();
}
/**

@ -37,7 +37,6 @@ import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.formats.html.markup.Table;
import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
import jdk.javadoc.internal.doclets.toolkit.ConstructorWriter;
@ -152,20 +151,10 @@ public class ConstructorWriterImpl extends AbstractExecutableMemberWriter
*/
@Override
public Content getSignature(ExecutableElement constructor) {
Content pre = new HtmlTree(HtmlTag.PRE);
writer.addAnnotationInfo(constructor, pre);
int annotationLength = pre.charCount();
addModifiers(constructor, pre);
if (configuration.linksource) {
Content constructorName = new StringContent(name(constructor));
writer.addSrcLink(constructor, constructorName, pre);
} else {
addName(name(constructor), pre);
}
int indent = pre.charCount() - annotationLength;
addParameters(constructor, pre, indent);
addExceptions(constructor, pre, indent);
return pre;
return new MemberSignature(constructor)
.addParameters(getParameters(constructor, true))
.addExceptions(getExceptions(constructor))
.toContent();
}
/**

@ -32,9 +32,7 @@ import javax.lang.model.element.VariableElement;
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.formats.html.markup.Table;
import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
import jdk.javadoc.internal.doclets.toolkit.Content;
@ -118,20 +116,9 @@ public class EnumConstantWriterImpl extends AbstractMemberWriter
*/
@Override
public Content getSignature(VariableElement enumConstant) {
Content pre = new HtmlTree(HtmlTag.PRE);
writer.addAnnotationInfo(enumConstant, pre);
addModifiers(enumConstant, pre);
Content enumConstantLink = writer.getLink(new LinkInfoImpl(
configuration, LinkInfoImpl.Kind.MEMBER, enumConstant.asType()));
pre.add(enumConstantLink);
pre.add(" ");
if (configuration.linksource) {
Content enumConstantName = new StringContent(name(enumConstant));
writer.addSrcLink(enumConstant, enumConstantName, pre);
} else {
addName(name(enumConstant), pre);
}
return pre;
return new MemberSignature(enumConstant)
.addType(enumConstant.asType())
.toContent();
}
/**

@ -35,7 +35,6 @@ import javax.lang.model.element.VariableElement;
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.formats.html.markup.Table;
@ -121,20 +120,9 @@ public class FieldWriterImpl extends AbstractMemberWriter
*/
@Override
public Content getSignature(VariableElement field) {
Content pre = new HtmlTree(HtmlTag.PRE);
writer.addAnnotationInfo(field, pre);
addModifiers(field, pre);
Content fieldlink = writer.getLink(new LinkInfoImpl(
configuration, LinkInfoImpl.Kind.MEMBER, field.asType()));
pre.add(fieldlink);
pre.add(" ");
if (configuration.linksource) {
Content fieldName = new StringContent(name(field));
writer.addSrcLink(field, fieldName, pre);
} else {
addName(name(field), pre);
}
return pre;
return new MemberSignature(field)
.addType(field.asType())
.toContent();
}
/**

@ -1715,20 +1715,7 @@ public class HtmlDocletWriter {
* added
*/
public void addAnnotationInfo(PackageElement packageElement, Content htmltree) {
addAnnotationInfo(packageElement, packageElement.getAnnotationMirrors(), htmltree);
}
/**
* Add the annotation types of the executable receiver.
*
* @param method the executable to write the receiver annotations for.
* @param descList a list of annotation mirrors.
* @param htmltree the documentation tree to which the annotation info will be
* added
*/
public void addReceiverAnnotationInfo(ExecutableElement method, List<AnnotationMirror> descList,
Content htmltree) {
addAnnotationInfo(0, method, descList, false, htmltree);
addAnnotationInfo(packageElement.getAnnotationMirrors(), htmltree);
}
/*
@ -1739,7 +1726,7 @@ public class HtmlDocletWriter {
List<? extends AnnotationMirror> annotationMirrors, Content htmltree) {
TypeMirror rcvrType = method.getReceiverType();
List<? extends AnnotationMirror> annotationMirrors1 = rcvrType.getAnnotationMirrors();
addAnnotationInfo(0, method, annotationMirrors1, false, htmltree);
htmltree.add(getAnnotationInfo(annotationMirrors1, false));
}
/**
@ -1749,97 +1736,65 @@ public class HtmlDocletWriter {
* @param htmltree the content tree to which the annotation types will be added
*/
public void addAnnotationInfo(Element element, Content htmltree) {
addAnnotationInfo(element, element.getAnnotationMirrors(), htmltree);
addAnnotationInfo(element.getAnnotationMirrors(), htmltree);
}
/**
* Add the annotatation types for the given element and parameter.
*
* @param indent the number of spaces to indent the parameters.
* @param element the element to write annotations for.
* @param param the parameter to write annotations for.
* @param tree the content tree to which the annotation types will be added
*/
public boolean addAnnotationInfo(int indent, Element element, VariableElement param,
Content tree) {
return addAnnotationInfo(indent, element, param.getAnnotationMirrors(), false, tree);
public boolean addAnnotationInfo(VariableElement param, Content tree) {
Content annotaionInfo = getAnnotationInfo(param.getAnnotationMirrors(), false);
if (annotaionInfo.isEmpty()) {
return false;
}
tree.add(annotaionInfo);
return true;
}
/**
* Adds the annotatation types for the given Element.
*
* @param element the element to write annotations for.
* @param descList a list of annotation mirrors.
* @param htmltree the documentation tree to which the annotation info will be
* added
*/
private void addAnnotationInfo(Element element, List<? extends AnnotationMirror> descList,
Content htmltree) {
addAnnotationInfo(0, element, descList, true, htmltree);
private void addAnnotationInfo(List<? extends AnnotationMirror> descList, Content htmltree) {
htmltree.add(getAnnotationInfo(descList, true));
}
/**
* Adds the annotation types for the given element.
* Return a content tree containing the annotation types for the given element.
*
* @param indent the number of extra spaces to indent the annotations.
* @param element the element to write annotations for.
* @param descList a list of annotation mirrors.
* @param htmltree the documentation tree to which the annotation info will be
* added
* @return the documentation tree containing the annotation info.
*/
private boolean addAnnotationInfo(int indent, Element element,
List<? extends AnnotationMirror> descList, boolean lineBreak, Content htmltree) {
List<Content> annotations = getAnnotations(indent, descList, lineBreak);
Content getAnnotationInfo(List<? extends AnnotationMirror> descList, boolean lineBreak) {
List<Content> annotations = getAnnotations(descList, lineBreak);
String sep = "";
if (annotations.isEmpty()) {
return false;
}
ContentBuilder builder = new ContentBuilder();
for (Content annotation: annotations) {
htmltree.add(sep);
htmltree.add(annotation);
builder.add(sep);
builder.add(annotation);
if (!lineBreak) {
sep = " ";
}
}
return true;
}
/**
* Return the string representations of the annotation types for
* the given doc.
*
* @param indent the number of extra spaces to indent the annotations.
* @param descList a list of annotation mirrors.
* @param linkBreak if true, add new line between each member value.
* @return a list of strings representing the annotations being
* documented.
*/
private List<Content> getAnnotations(int indent, List<? extends AnnotationMirror> descList, boolean linkBreak) {
return getAnnotations(indent, descList, linkBreak, true);
}
private List<Content> getAnnotations(int indent, AnnotationMirror amirror, boolean linkBreak) {
List<AnnotationMirror> descList = new ArrayList<>();
descList.add(amirror);
return getAnnotations(indent, descList, linkBreak, true);
return builder;
}
/**
* Return the string representations of the annotation types for
* the given doc.
*
* A {@code null} {@code elementType} indicates that all the
* annotations should be returned without any filtering.
*
* @param indent the number of extra spaces to indent the annotations.
* @param descList a list of annotation mirrors.
* @param linkBreak if true, add new line between each member value.
* @param isJava5DeclarationLocation
* @return a list of strings representing the annotations being
* documented.
*/
public List<Content> getAnnotations(int indent, List<? extends AnnotationMirror> descList,
boolean linkBreak, boolean isJava5DeclarationLocation) {
public List<Content> getAnnotations(List<? extends AnnotationMirror> descList, boolean linkBreak) {
List<Content> results = new ArrayList<>();
ContentBuilder annotation;
for (AnnotationMirror aDesc : descList) {
@ -1853,11 +1808,6 @@ public class HtmlDocletWriter {
(!isAnnotationDocumented && !isContainerDocumented)) {
continue;
}
/* TODO: check logic here to correctly handle declaration
* and type annotations.
if (utils.isDeclarationAnnotation(annotationElement, isJava5DeclarationLocation)) {
continue;
}*/
annotation = new ContentBuilder();
isAnnotationDocumented = false;
LinkInfoImpl linkInfo = new LinkInfoImpl(configuration,
@ -1900,9 +1850,7 @@ public class HtmlDocletWriter {
new SimpleAnnotationValueVisitor9<Void, List<AnnotationValue>>() {
@Override
public Void visitArray(List<? extends AnnotationValue> vals, List<AnnotationValue> annotationTypeValues) {
for (AnnotationValue av : vals) {
annotationTypeValues.add(av);
}
annotationTypeValues.addAll(vals);
return null;
}
}.visit(a, annotationTypeValues);
@ -1917,13 +1865,11 @@ public class HtmlDocletWriter {
// If the container has 1 or more value defined and if the
// repeatable type annotation is not documented, print the container.
else {
addAnnotations(annotationElement, linkInfo, annotation, pairs,
indent, false);
addAnnotations(annotationElement, linkInfo, annotation, pairs, false);
}
}
else {
addAnnotations(annotationElement, linkInfo, annotation, pairs,
indent, linkBreak);
addAnnotations(annotationElement, linkInfo, annotation, pairs, linkBreak);
}
annotation.add(linkBreak ? DocletConstants.NL : "");
results.add(annotation);
@ -1938,13 +1884,12 @@ public class HtmlDocletWriter {
* @param linkInfo the information about the link
* @param annotation the annotation string to which the annotation will be added
* @param map annotation type element to annotation value pairs
* @param indent the number of extra spaces to indent the annotations.
* @param linkBreak if true, add new line between each member value
*/
private void addAnnotations(TypeElement annotationDoc, LinkInfoImpl linkInfo,
ContentBuilder annotation,
Map<? extends ExecutableElement, ? extends AnnotationValue> map,
int indent, boolean linkBreak) {
boolean linkBreak) {
linkInfo.label = new StringContent("@");
linkInfo.label.add(annotationDoc.getSimpleName());
annotation.add(getLink(linkInfo));
@ -1961,7 +1906,7 @@ public class HtmlDocletWriter {
if (linkBreak) {
annotation.add(DocletConstants.NL);
int spaces = annotationDoc.getSimpleName().length() + 2;
for (int k = 0; k < (spaces + indent); k++) {
for (int k = 0; k < (spaces); k++) {
annotation.add(" ");
}
}
@ -2074,7 +2019,7 @@ public class HtmlDocletWriter {
}
@Override
public Content visitAnnotation(AnnotationMirror a, Void p) {
List<Content> list = getAnnotations(0, a, false);
List<Content> list = getAnnotations(List.of(a), false);
ContentBuilder buf = new ContentBuilder();
for (Content c : list) {
buf.add(c);

@ -41,6 +41,7 @@ import jdk.javadoc.internal.doclets.toolkit.Content;
import jdk.javadoc.internal.doclets.toolkit.Resources;
import jdk.javadoc.internal.doclets.toolkit.util.DocPath;
import jdk.javadoc.internal.doclets.toolkit.util.DocPaths;
import jdk.javadoc.internal.doclets.toolkit.util.DocletConstants;
import jdk.javadoc.internal.doclets.toolkit.util.links.LinkFactory;
import jdk.javadoc.internal.doclets.toolkit.util.links.LinkInfo;
@ -134,7 +135,7 @@ public class LinkFactoryImpl extends LinkFactory {
* {@inheritDoc}
*/
@Override
protected Content getTypeParameterLinks(LinkInfo linkInfo, boolean isClassLabel){
protected Content getTypeParameterLinks(LinkInfo linkInfo, boolean isClassLabel) {
Content links = newContent();
List<TypeMirror> vars = new ArrayList<>();
TypeMirror ctype = linkInfo.type != null
@ -164,6 +165,9 @@ public class LinkFactoryImpl extends LinkFactory {
if (many) {
links.add(",");
links.add(Entity.ZERO_WIDTH_SPACE);
if (((LinkInfoImpl) linkInfo).getContext() == LinkInfoImpl.Kind.MEMBER_TYPE_PARAMS) {
links.add(DocletConstants.NL);
}
}
links.add(getTypeParameterLink(linkInfo, t));
many = true;
@ -186,7 +190,6 @@ public class LinkFactoryImpl extends LinkFactory {
typeLinkInfo.excludeTypeBounds = linkInfo.excludeTypeBounds;
typeLinkInfo.excludeTypeParameterLinks = linkInfo.excludeTypeParameterLinks;
typeLinkInfo.linkToSelf = linkInfo.linkToSelf;
typeLinkInfo.isJava5DeclarationLocation = false;
return getLink(typeLinkInfo);
}
@ -218,7 +221,7 @@ public class LinkFactoryImpl extends LinkFactory {
if (annotations.isEmpty())
return links;
List<Content> annos = m_writer.getAnnotations(0, annotations, false, linkInfo.isJava5DeclarationLocation);
List<Content> annos = m_writer.getAnnotations(annotations, false);
boolean isFirst = true;
for (Content anno : annos) {

@ -36,7 +36,6 @@ import javax.lang.model.type.TypeMirror;
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.formats.html.markup.Table;
@ -140,23 +139,12 @@ public class MethodWriterImpl extends AbstractExecutableMemberWriter
*/
@Override
public Content getSignature(ExecutableElement method) {
HtmlTree pre = new HtmlTree(HtmlTag.PRE);
pre.setStyle(HtmlStyle.methodSignature);
writer.addAnnotationInfo(method, pre);
int annotationLength = pre.charCount();
addModifiers(method, pre);
addTypeParameters(method, pre);
addReturnType(method, pre);
if (configuration.linksource) {
Content methodName = new StringContent(name(method));
writer.addSrcLink(method, methodName, pre);
} else {
addName(name(method), pre);
}
int indent = pre.charCount() - annotationLength;
addParameters(method, pre, indent);
addExceptions(method, pre, indent);
return pre;
return new MemberSignature(method)
.addTypeParameters(getTypeParameters(method))
.addReturnType(getReturnType(method))
.addParameters(getParameters(method, true))
.addExceptions(getExceptions(method))
.toContent();
}
/**
@ -399,19 +387,17 @@ public class MethodWriterImpl extends AbstractExecutableMemberWriter
}
/**
* Add the return type.
* Get the return type for the given method.
*
* @param method the method being documented.
* @param htmltree the content tree to which the return type will be added
* @return content containing the return type
*/
protected void addReturnType(ExecutableElement method, Content htmltree) {
protected Content getReturnType(ExecutableElement method) {
TypeMirror type = utils.getReturnType(method);
if (type != null) {
Content linkContent = writer.getLink(
new LinkInfoImpl(configuration, LinkInfoImpl.Kind.RETURN_TYPE, type));
htmltree.add(linkContent);
htmltree.add(Entity.NO_BREAK_SPACE);
return writer.getLink(new LinkInfoImpl(configuration, LinkInfoImpl.Kind.RETURN_TYPE, type));
}
return new ContentBuilder();
}
@Override

@ -32,7 +32,6 @@ import javax.lang.model.element.TypeElement;
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.formats.html.markup.Table;
@ -114,21 +113,9 @@ public class PropertyWriterImpl extends AbstractMemberWriter
*/
@Override
public Content getSignature(ExecutableElement property) {
Content pre = new HtmlTree(HtmlTag.PRE);
writer.addAnnotationInfo(property, pre);
addModifiers(property, pre);
Content propertylink = writer.getLink(new LinkInfoImpl(
configuration, LinkInfoImpl.Kind.MEMBER,
utils.getReturnType(property)));
pre.add(propertylink);
pre.add(" ");
if (configuration.linksource) {
Content propertyName = new StringContent(name(property));
writer.addSrcLink(property, propertyName, pre);
} else {
addName(name(property), pre);
}
return pre;
return new MemberSignature(property)
.addType(utils.getReturnType(property))
.toContent();
}
/**

@ -1,5 +1,5 @@
/*
* Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2010, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -41,6 +41,8 @@ public enum HtmlStyle {
allClassesContainer,
allPackagesContainer,
altColor,
annotations,
arguments,
bar,
block,
blockList,
@ -70,6 +72,7 @@ public enum HtmlStyle {
detail,
docSummary,
emphasizedPhrase,
exceptions,
externalLink,
fieldDetails,
fieldSummary,
@ -91,12 +94,15 @@ public enum HtmlStyle {
legalCopy,
mainContainer,
memberDetails,
memberName,
memberNameLabel,
memberNameLink,
memberSignature,
memberSummary,
methodDetails,
methodSignature,
methodSummary,
modifiers,
moduleDescription,
moduleLabelInPackage,
moduleLabelInType,
@ -122,6 +128,7 @@ public enum HtmlStyle {
providesSummary,
requiresSummary,
returnLabel,
returnType,
rightContainer,
rightIframe,
rowColor,
@ -147,6 +154,8 @@ public enum HtmlStyle {
topNav,
typeNameLabel,
typeNameLink,
typeParameters,
typeParametersLong,
typeSummary,
useSummary,
usesSummary

@ -112,6 +112,11 @@ public class RawHtml extends Content {
state = State.ENTITY;
count++;
break;
case '\r':
case '\n':
// Windows uses "\r\n" as line separator while UNIX uses "\n".
// Ignore line separators to get consistent results across platforms.
break;
default:
count++;
}

@ -1,4 +1,4 @@
/*
/*
* Javadoc style sheet
*/
@ -165,7 +165,7 @@ button {
height:2.8em;
padding-top:10px;
overflow:hidden;
font-size:12px;
font-size:12px;
}
.bottomNav {
margin-top:10px;
@ -533,9 +533,9 @@ td.colSecond a:link, td.colSecond a:visited,
th.colFirst a:link, th.colFirst a:visited,
th.colSecond a:link, th.colSecond a:visited,
th.colConstructorName a:link, th.colConstructorName a:visited,
th.colDeprecatedItemName a:link, th.colDeprecatedItemName a:visited,
.constantValuesContainer td a:link, .constantValuesContainer td a:visited,
.allClassesContainer td a:link, .allClassesContainer td a:visited,
th.colDeprecatedItemName a:link, th.colDeprecatedItemName a:visited,
.constantValuesContainer td a:link, .constantValuesContainer td a:visited,
.allClassesContainer td a:link, .allClassesContainer td a:visited,
.allPackagesContainer td a:link, .allPackagesContainer td a:visited {
font-weight:bold;
}
@ -571,6 +571,26 @@ td.colLast div {
td.colLast a {
padding-bottom:3px;
}
div.memberSignature {
font-family:'DejaVu Sans Mono', monospace;
font-size:14px;
margin-top:6px;
margin-bottom:14px;
white-space: pre-wrap;
}
div.memberSignature span.annotations {
white-space: pre-wrap;
}
div.memberSignature span.typeParametersLong,
div.memberSignature span.arguments,
div.memberSignature span.exceptions {
display: inline-block;
vertical-align: top;
white-space: pre;
}
div.memberSignature span.typeParameters {
white-space: normal;
}
/*
* Styles for formatting effect.
*/
@ -616,12 +636,12 @@ div.block div.block span.interfaceName {
* Styles for IFRAME.
*/
.mainContainer {
margin:0 auto;
padding:0;
height:100%;
width:100%;
position:fixed;
top:0;
margin:0 auto;
padding:0;
height:100%;
width:100%;
position:fixed;
top:0;
left:0;
}
.leftContainer {

@ -71,12 +71,6 @@ public abstract class LinkInfo {
*/
public boolean isTypeBound = false;
/**
* Whether the document element is in a Java 5 declaration
* location or not.
*/
public boolean isJava5DeclarationLocation = true;
/**
* The label for the link.
*/
@ -161,7 +155,6 @@ public abstract class LinkInfo {
", type=" + type +
", isVarArg=" + isVarArg +
", isTypeBound=" + isTypeBound +
", isJava5DeclarationLocation=" + isJava5DeclarationLocation +
", label=" + label +
", isStrong=" + isStrong +
", includeTypeInClassLinkLabel=" + includeTypeInClassLinkLabel +

@ -65,8 +65,9 @@ public class TestAnnotationTypes extends JavadocTester {
+ "<a id=\"DEFAULT_NAME\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<pre>static final&nbsp;java."
+ "lang.String&nbsp;DEFAULT_NAME</pre>");
+ "<div class=\"memberSignature\"><span class=\"modifiers\">static final</span>&nbsp;"
+ "<span class=\"returnType\">java.lang.String</span>&nbsp;"
+ "<span class=\"memberName\">DEFAULT_NAME</span></div>\n");
checkOutput("pkg/AnnotationType.html", true,
"<li>Summary:&nbsp;</li>\n"
@ -90,7 +91,8 @@ public class TestAnnotationTypes extends JavadocTester {
"<a id=\"value()\">",
"<!-- -->",
"</a>",
"<pre>int&nbsp;value</pre>");
"<div class=\"memberSignature\"><span class=\"returnType\">int</span>"
+ "&nbsp;<span class=\"memberName\">value</span></div>");
checkOutput("pkg/AnnotationType.html", false,
"<HR>\n\n"

@ -82,14 +82,16 @@ public class TestDeprecatedDocs extends JavadocTester {
"<pre>@Deprecated\n"
+ "public class <span class=\"typeNameLabel\">DeprecatedClassByAnnotation</span>\n"
+ "extends java.lang.Object</pre>",
"<pre>@Deprecated(forRemoval=true)\n"
+ "public&nbsp;int field</pre>\n"
"<div class=\"memberSignature\"><span class=\"annotations\">@Deprecated(forRemoval=true)\n"
+ "</span><span class=\"modifiers\">public</span>&nbsp;<span class=\"returnType\">int</span>"
+ "&nbsp;<span class=\"memberName\">field</span></div>\n"
+ "<div class=\"deprecationBlock\"><span class=\"deprecatedLabel\">Deprecated, for removal: This API element is subject to removal in a future version.</span></div>",
"<pre>@Deprecated(forRemoval=true)\n"
+ "public&nbsp;DeprecatedClassByAnnotation()</pre>\n"
"<div class=\"memberSignature\"><span class=\"annotations\">@Deprecated(forRemoval=true)\n"
+ "</span><span class=\"modifiers\">public</span>&nbsp;<span class=\"memberName\">DeprecatedClassByAnnotation</span>()</div>\n"
+ "<div class=\"deprecationBlock\"><span class=\"deprecatedLabel\">Deprecated, for removal: This API element is subject to removal in a future version.</span></div>",
"<pre class=\"methodSignature\">@Deprecated\n"
+ "public&nbsp;void&nbsp;method()</pre>\n"
"<div class=\"memberSignature\"><span class=\"annotations\">@Deprecated\n"
+ "</span><span class=\"modifiers\">public</span>&nbsp;<span class=\"returnType\">"
+ "void</span>&nbsp;<span class=\"memberName\">method</span>()</div>\n"
+ "<div class=\"deprecationBlock\"><span class=\"deprecatedLabel\">Deprecated.</span></div>");
checkOutput("pkg/TestAnnotationType.html", true,
@ -100,18 +102,19 @@ public class TestDeprecatedDocs extends JavadocTester {
+ "<div class=\"deprecationBlock\"><span class=\"deprecatedLabel\">Deprecated, for removal: This API element is subject to removal in a future version.</span>\n"
+ "<div class=\"deprecationComment\">annotation_test1 passes.</div>\n"
+ "</div>",
"<pre>@Deprecated(forRemoval=true)\n"
+ "static final&nbsp;int&nbsp;field</pre>\n"
"<div class=\"memberSignature\"><span class=\"annotations\">@Deprecated(forRemoval=true)\n" +
"</span><span class=\"modifiers\">static final</span>&nbsp;<span class=\"returnType\">int</span>&nbsp;<span class=\"memberName\">field</span></div>\n"
+ "<div class=\"deprecationBlock\"><span class=\"deprecatedLabel\">Deprecated, for removal: This "
+ "API element is subject to removal in a future version.</span>\n"
+ "<div class=\"deprecationComment\">annotation_test4 passes.</div>\n"
+ "</div>",
"<pre>@Deprecated(forRemoval=true)\n"
+ "int&nbsp;required</pre>\n"
"<div class=\"memberSignature\"><span class=\"annotations\">@Deprecated(forRemoval=true)\n"
+ "</span><span class=\"returnType\">int</span>&nbsp;<span class=\"memberName\">required</span></div>\n"
+ "<div class=\"deprecationBlock\"><span class=\"deprecatedLabel\">Deprecated, for removal: This API element is subject to removal in a future version.</span>\n"
+ "<div class=\"deprecationComment\">annotation_test3 passes.</div>\n"
+ "</div>",
"<pre>java.lang.String&nbsp;optional</pre>\n"
"<div class=\"memberSignature\"><span class=\"returnType\">java.lang.String</span>"
+ "&nbsp;<span class=\"memberName\">optional</span></div>\n"
+ "<div class=\"deprecationBlock\"><span class=\"deprecatedLabel\">Deprecated.</span>\n"
+ "<div class=\"deprecationComment\">annotation_test2 passes.</div>\n"
+ "</div>");
@ -124,8 +127,8 @@ public class TestDeprecatedDocs extends JavadocTester {
+ "<div class=\"deprecationBlock\"><span class=\"deprecatedLabel\">Deprecated, for removal: This API element is subject to removal in a future version.</span>\n"
+ "<div class=\"deprecationComment\">class_test1 passes.</div>\n"
+ "</div>",
"<pre>@Deprecated(forRemoval=true)\n"
+ "public&nbsp;TestClass()</pre>\n"
"<div class=\"memberSignature\"><span class=\"annotations\">@Deprecated(forRemoval=true)\n"
+ "</span><span class=\"modifiers\">public</span>&nbsp;<span class=\"memberName\">TestClass</span>()</div>\n"
+ "<div class=\"deprecationBlock\"><span class=\"deprecatedLabel\">Deprecated, for removal: This API element is subject to removal in a future version.</span>\n"
+ "<div class=\"deprecationComment\">class_test3 passes. This is the second sentence of deprecated description for a constructor.</div>\n"
+ "</div>",
@ -164,8 +167,9 @@ public class TestDeprecatedDocs extends JavadocTester {
+ "<div class=\"deprecationBlock\"><span class=\"deprecatedLabel\">Deprecated, for removal: This API element is subject to removal in a future version.</span>\n"
+ "<div class=\"deprecationComment\">enum_test1 passes.</div>\n"
+ "</div>",
"<pre>@Deprecated(forRemoval=true)\n"
+ "public static final&nbsp;<a href=\"TestEnum.html\" title=\"enum in pkg\">TestEnum</a> FOR_REMOVAL</pre>\n"
"<div class=\"memberSignature\"><span class=\"annotations\">@Deprecated(forRemoval=true)\n"
+ "</span><span class=\"modifiers\">public static final</span>&nbsp;<span class=\"returnType\">"
+ "<a href=\"TestEnum.html\" title=\"enum in pkg\">TestEnum</a></span>&nbsp;<span class=\"memberName\">FOR_REMOVAL</span></div>\n"
+ "<div class=\"deprecationBlock\"><span class=\"deprecatedLabel\">Deprecated, for removal: This API element is subject to removal in a future version.</span>\n"
+ "<div class=\"deprecationComment\">enum_test3 passes.</div>\n"
+ "</div>");

@ -373,21 +373,22 @@ public class TestHtmlDefinitionListTag extends JavadocTester {
// Test with -nocomment and -nodeprecated options. The ClassDocs whould
// not display definition lists for any member details.
checkOutput("pkg1/C1.html", expectFound,
"<pre class=\"methodSignature\">public&nbsp;void&nbsp;readObject()\n" +
" throws java.io.IOException</pre>\n" +
"<div class=\"memberSignature\"><span class=\"modifiers\">public</span>&nbsp;" +
"<span class=\"returnType\">void</span>&nbsp;<span class=\"memberName\">readObject</span>()\n" +
" throws <span class=\"exceptions\">java.io.IOException</span></div>\n" +
"</section>\n" +
"</li>");
checkOutput("pkg1/C2.html", expectFound,
"<pre>public&nbsp;C2()</pre>\n" +
"<div class=\"memberSignature\"><span class=\"modifiers\">public</span>" +
"&nbsp;<span class=\"memberName\">C2</span>()</div>\n" +
"</section>\n" +
"</li>");
checkOutput("pkg1/C1.ModalExclusionType.html", expectFound,
"<pre>public " +
"static final&nbsp;<a href=\"C1.ModalExclusionType.html\" " +
"title=\"enum in pkg1\">C1.ModalExclusionType</a> " +
"APPLICATION_EXCLUDE</pre>\n" +
"<div class=\"memberSignature\"><span class=\"modifiers\">public static final</span>&nbsp;" +
"<span class=\"returnType\"><a href=\"C1.ModalExclusionType.html\" title=\"enum in pkg1\">" +
"C1.ModalExclusionType</a></span>&nbsp;<span class=\"memberName\">APPLICATION_EXCLUDE</span></div>\n" +
"</section>\n" +
"</li>");

@ -48,11 +48,12 @@ public class TestIndentation extends JavadocTester {
checkExit(Exit.OK);
checkOutput("p/Indent.html", true,
"<pre class=\"methodSignature\">public&nbsp;&lt;T&gt;&nbsp;void&nbsp;m&#8203;(T&nbsp;t1,",
"\n"
+ " T&nbsp;t2)",
"\n"
+ " throws java.lang.Exception");
"<div class=\"memberSignature\"><span class=\"modifiers\">public</span>&nbsp;"
+ "<span class=\"typeParameters\">&lt;T&gt;</span>&nbsp;"
+ "<span class=\"returnType\">void</span>&nbsp;<span class=\"memberName\">m</span>"
+ "&#8203;(<span class=\"arguments\">T&nbsp;t1,\n"
+ "T&nbsp;t2)</span>\n"
+ " throws <span class=\"exceptions\">java.lang.Exception</span></div>");
// Test indentation of annotations and annotated method arguments
checkOutput("p/IndentAnnot.html", false,

@ -67,8 +67,10 @@ public class TestInterface extends JavadocTester {
checkExit(Exit.OK);
checkOutput("pkg/Interface.html", true,
"<pre class=\"methodSignature\">int&nbsp;method()</pre>",
"<pre>static final&nbsp;int field</pre>",
"<div class=\"memberSignature\"><span class=\"returnType\">int</span>&nbsp;"
+ "<span class=\"memberName\">method</span>()</div>",
"<div class=\"memberSignature\"><span class=\"modifiers\">static final</span>&nbsp;"
+ "<span class=\"returnType\">int</span>&nbsp;<span class=\"memberName\">field</span></div>",
// Make sure known implementing class list is correct and omits type parameters.
"<dl>\n"
+ "<dt>All Known Implementing Classes:</dt>\n"
@ -126,7 +128,8 @@ public class TestInterface extends JavadocTester {
+ "<a id=\"f\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<pre>public static&nbsp;int f</pre>\n"
+ "<div class=\"memberSignature\"><span class=\"modifiers\">public static</span>&nbsp;"
+ "<span class=\"returnType\">int</span>&nbsp;<span class=\"memberName\">f</span></div>\n"
+ "<div class=\"block\">A hider field</div>",
"<td class=\"colFirst\"><code>static void</code></td>\n"
@ -140,7 +143,8 @@ public class TestInterface extends JavadocTester {
+ "<a id=\"staticMethod()\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<pre class=\"methodSignature\">public static&nbsp;void&nbsp;staticMethod()</pre>\n"
+ "<div class=\"memberSignature\"><span class=\"modifiers\">public static</span>&nbsp;"
+ "<span class=\"returnType\">void</span>&nbsp;<span class=\"memberName\">staticMethod</span>()</div>\n"
+ "<div class=\"block\"><span class=\"descfrmTypeLabel\">"
+ "Description copied from interface:&nbsp;<code>"
+ "<a href=\"InterfaceWithStaticMembers.html#staticMethod()\">"

@ -57,11 +57,14 @@ public class TestJavaFX extends JavadocTester {
"<dt><span class=\"seeLabel\">See Also:</span></dt>\n"
+ "<dd><a href=\"#getRate()\"><code>getRate()</code></a>, \n"
+ "<a href=\"#setRate(double)\"><code>setRate(double)</code></a></dd>",
"<pre class=\"methodSignature\">public final&nbsp;void&nbsp;setRate&#8203;(double&nbsp;value)</pre>\n"
"<div class=\"memberSignature\"><span class=\"modifiers\">public final</span>&nbsp;"
+ "<span class=\"returnType\">void</span>&nbsp;<span class=\"memberName\">setRate</span>&#8203;"
+ "(<span class=\"arguments\">double&nbsp;value)</span></div>\n"
+ "<div class=\"block\">Sets the value of the property rate.</div>\n"
+ "<dl>\n"
+ "<dt><span class=\"simpleTagLabel\">Property description:</span></dt>",
"<pre class=\"methodSignature\">public final&nbsp;double&nbsp;getRate()</pre>\n"
"<div class=\"memberSignature\"><span class=\"modifiers\">public final</span>&nbsp;"
+ "<span class=\"returnType\">double</span>&nbsp;<span class=\"memberName\">getRate</span>()</div>\n"
+ "<div class=\"block\">Gets the value of the property rate.</div>\n"
+ "<dl>\n"
+ "<dt><span class=\"simpleTagLabel\">Property description:</span></dt>",
@ -90,20 +93,24 @@ public class TestJavaFX extends JavadocTester {
+ "<a id=\"pausedProperty\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<pre>public final&nbsp;<a href=\"C.BooleanProperty.html\" "
+ "title=\"class in pkg1\">C.BooleanProperty</a> pausedProperty</pre>\n"
+ "<div class=\"memberSignature\"><span class=\"modifiers\">public final</span>&nbsp;"
+ "<span class=\"returnType\"><a href=\"C.BooleanProperty.html\" title=\"class in pkg1\">"
+ "C.BooleanProperty</a></span>&nbsp;<span class=\"memberName\">pausedProperty</span></div>\n"
+ "<div class=\"block\">Defines if paused. The second line.</div>",
"<h3>isPaused</h3>\n"
+ "<a id=\"isPaused()\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<pre class=\"methodSignature\">public final&nbsp;double&nbsp;isPaused()</pre>\n"
+ "<div class=\"memberSignature\"><span class=\"modifiers\">public final</span>&nbsp;"
+ "<span class=\"returnType\">double</span>&nbsp;<span class=\"memberName\">isPaused</span>()</div>\n"
+ "<div class=\"block\">Gets the value of the property paused.</div>",
"<h3>setPaused</h3>\n"
+ "<a id=\"setPaused(boolean)\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<pre class=\"methodSignature\">public final&nbsp;void&nbsp;setPaused&#8203;(boolean&nbsp;value)</pre>\n"
+ "<div class=\"memberSignature\"><span class=\"modifiers\">public final</span>&nbsp;"
+ "<span class=\"returnType\">void</span>&nbsp;<span class=\"memberName\">setPaused</span>&#8203;"
+ "(<span class=\"arguments\">boolean&nbsp;value)</span></div>\n"
+ "<div class=\"block\">Sets the value of the property paused.</div>\n"
+ "<dl>\n"
+ "<dt><span class=\"simpleTagLabel\">Property description:</span></dt>\n"
@ -114,7 +121,8 @@ public class TestJavaFX extends JavadocTester {
+ "<a id=\"isPaused()\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<pre class=\"methodSignature\">public final&nbsp;double&nbsp;isPaused()</pre>\n"
+ "<div class=\"memberSignature\"><span class=\"modifiers\">public final</span>&nbsp;"
+ "<span class=\"returnType\">double</span>&nbsp;<span class=\"memberName\">isPaused</span>()</div>\n"
+ "<div class=\"block\">Gets the value of the property paused.</div>\n"
+ "<dl>\n"
+ "<dt><span class=\"simpleTagLabel\">Property description:</span></dt>\n"
@ -125,8 +133,9 @@ public class TestJavaFX extends JavadocTester {
+ "<a id=\"rateProperty\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<pre>public final&nbsp;<a href=\"C.DoubleProperty.html\" "
+ "title=\"class in pkg1\">C.DoubleProperty</a> rateProperty</pre>\n"
+ "<div class=\"memberSignature\"><span class=\"modifiers\">public final</span>&nbsp;"
+ "<span class=\"returnType\"><a href=\"C.DoubleProperty.html\" title=\"class in pkg1\">"
+ "C.DoubleProperty</a></span>&nbsp;<span class=\"memberName\">rateProperty</span></div>\n"
+ "<div class=\"block\">Defines the direction/speed at which the "
+ "<code>Timeline</code> is expected to\n"
+ " be played. This is the second line.</div>",
@ -134,7 +143,9 @@ public class TestJavaFX extends JavadocTester {
+ "<a id=\"setRate(double)\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<pre class=\"methodSignature\">public final&nbsp;void&nbsp;setRate&#8203;(double&nbsp;value)</pre>\n"
+ "<div class=\"memberSignature\"><span class=\"modifiers\">public final</span>&nbsp;"
+ "<span class=\"returnType\">void</span>&nbsp;<span class=\"memberName\">setRate</span>&#8203;"
+ "(<span class=\"arguments\">double&nbsp;value)</span></div>\n"
+ "<div class=\"block\">Sets the value of the property rate.</div>\n"
+ "<dl>\n"
+ "<dt><span class=\"simpleTagLabel\">Property description:</span></dt>\n"
@ -148,7 +159,8 @@ public class TestJavaFX extends JavadocTester {
+ "<a id=\"getRate()\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<pre class=\"methodSignature\">public final&nbsp;double&nbsp;getRate()</pre>\n"
+ "<div class=\"memberSignature\"><span class=\"modifiers\">public final</span>&nbsp;"
+ "<span class=\"returnType\">double</span>&nbsp;<span class=\"memberName\">getRate</span>()</div>\n"
+ "<div class=\"block\">Gets the value of the property rate.</div>\n"
+ "<dl>\n"
+ "<dt><span class=\"simpleTagLabel\">Property description:</span></dt>\n"
@ -224,7 +236,9 @@ public class TestJavaFX extends JavadocTester {
+ "<a id=\"betaProperty\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<pre>public&nbsp;java.lang.Object betaProperty</pre>\n"
+ "<div class=\"memberSignature\"><span class=\"modifiers\">public</span>&nbsp;"
+ "<span class=\"returnType\">java.lang.Object</span>"
+ "&nbsp;<span class=\"memberName\">betaProperty</span></div>\n"
+ "</section>\n"
+ "</li>\n"
+ "<li class=\"blockList\">\n"
@ -233,7 +247,9 @@ public class TestJavaFX extends JavadocTester {
+ "<a id=\"gammaProperty\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<pre>public final&nbsp;java.util.List&lt;java.lang.String&gt; gammaProperty</pre>\n"
+ "<div class=\"memberSignature\"><span class=\"modifiers\">public final</span>&nbsp;"
+ "<span class=\"returnType\">java.util.List&lt;java.lang.String&gt;</span>"
+ "&nbsp;<span class=\"memberName\">gammaProperty</span></div>\n"
+ "</section>\n"
+ "</li>\n"
+ "<li class=\"blockListLast\">\n"
@ -242,8 +258,9 @@ public class TestJavaFX extends JavadocTester {
+ "<a id=\"deltaProperty\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<pre>public final&nbsp;java.util.List&lt;"
+ "java.util.Set&lt;? super java.lang.Object&gt;&gt; deltaProperty</pre>\n"
+ "<div class=\"memberSignature\"><span class=\"modifiers\">public final</span>&nbsp;"
+ "<span class=\"returnType\">java.util.List&lt;java.util.Set&lt;? super java.lang.Object&gt;&gt;"
+ "</span>&nbsp;<span class=\"memberName\">deltaProperty</span></div>\n"
+ "</section>\n"
+ "</li>\n"
+ "</ul>\n"

@ -57,7 +57,8 @@ public class TestLambdaFeature extends JavadocTester {
checkOutput("pkg/A.html", true,
"<td class=\"colFirst\"><code>default void</code></td>",
"<pre class=\"methodSignature\">default&nbsp;void&nbsp;defaultMethod()</pre>",
"<div class=\"memberSignature\"><span class=\"modifiers\">default</span>&nbsp;"
+ "<span class=\"returnType\">void</span>&nbsp;<span class=\"memberName\">defaultMethod</span>()</div>\n",
"<div role=\"tablist\" aria-orientation=\"horizontal\"><button role=\"tab\""
+ " aria-selected=\"true\" aria-controls=\"memberSummary_tabpanel\" tabindex=\"0\""
+ " onkeydown=\"switchTab(event)\" id=\"t0\" class=\"activeTableTab\">All Methods"

@ -74,13 +74,13 @@ public class TestLinkOption extends JavadocTester {
checkOutput("pkg/C.html", true,
"<a href=\"" + url + "java/lang/String.html?is-external=true\" "
+ "title=\"class or interface in java.lang\" class=\"externalLink\"><code>Link to String Class</code></a>",
//Make sure the parameters are indented properly when the -link option is used.
//Make sure the parameters are formatted properly when the -link option is used.
"(int&nbsp;p1,\n"
+ " int&nbsp;p2,\n"
+ " int&nbsp;p3)",
+ "int&nbsp;p2,\n"
+ "int&nbsp;p3)",
"(int&nbsp;p1,\n"
+ " int&nbsp;p2,\n"
+ " <a href=\"" + url + "java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\" class=\"externalLink\">"
+ "int&nbsp;p2,\n"
+ "<a href=\"" + url + "java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\" class=\"externalLink\">"
+ "Object</a>&nbsp;p3)");
checkOutput("pkg/B.html", true,

@ -49,19 +49,19 @@ public class TestLiteralCodeInPre extends JavadocTester {
checkExit(Exit.OK);
checkOutput("pkg/Test.html", true,
"no_pre()</pre>\n"
"no_pre</span>()</div>\n"
+ "<div class=\"block\">abc<code>def</code>ghi</div>",
"no_pre_extra_whitespace()</pre>\n"
"no_pre_extra_whitespace</span>()</div>\n"
+ "<div class=\"block\">abc<code> def </code>ghi</div>",
"in_pre()</pre>\n"
"in_pre</span>()</div>\n"
+ "<div class=\"block\"><pre> abc<code> def </code>ghi</pre></div>",
"pre_after_text()</pre>\n"
"pre_after_text</span>()</div>\n"
+ "<div class=\"block\">xyz <pre> abc<code> def </code>ghi</pre></div>",
"after_pre()</pre>\n"
"after_pre</span>()</div>\n"
+ "<div class=\"block\">xyz <pre> pqr </pre> abc<code> def </code>ghi</div>",
"back_in_pre()</pre>\n"
"back_in_pre</span>()</div>\n"
+ "<div class=\"block\">xyz <pre> pqr </pre> mno <pre> abc<code> def </code>ghi</pre></div>",
"typical_usage_code()</pre>\n"
"typical_usage_code</span>()</div>\n"
+ "<div class=\"block\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n"
+ " Example: <pre><code>\n"
+ " line 0 @Override\n"
@ -70,7 +70,7 @@ public class TestLiteralCodeInPre extends JavadocTester {
+ " line 3 }\n"
+ " </code></pre>\n"
+ " and so it goes.</div>",
"typical_usage_literal()</pre>\n"
"typical_usage_literal</span>()</div>\n"
+ "<div class=\"block\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n"
+ " Example: <pre>\n"
+ " line 0 @Override\n"
@ -79,7 +79,7 @@ public class TestLiteralCodeInPre extends JavadocTester {
+ " line 3 }\n"
+ " </pre>\n"
+ " and so it goes.</div>",
"recommended_usage_literal()</pre>\n"
"recommended_usage_literal</span>()</div>\n"
+ "<div class=\"block\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n"
+ " Example: <pre>\n"
+ " line 0 @Override\n"
@ -91,7 +91,8 @@ public class TestLiteralCodeInPre extends JavadocTester {
+ " <PRE>\n"
+ " <b>id </b>\n"
+ " </PRE></div>",
"<pre class=\"methodSignature\">public&nbsp;void&nbsp;htmlAttrInPre1()</pre>\n"
"<div class=\"memberSignature\"><span class=\"modifiers\">public</span>&nbsp;"
+ "<span class=\"returnType\">void</span>&nbsp;<span class=\"memberName\">htmlAttrInPre1</span>()</div>\n"
+ "<div class=\"block\">More html tag outliers.\n"
+ " <pre>\n"
+ " @Override\n"

@ -96,7 +96,7 @@ public class TestMemberInheritance extends JavadocTester {
+ "<th class=\"colSecond\" scope=\"row\"><code><span class=\"memberNameLink\">"
+ "<a href=\"#between(java.time.LocalDate,java.time.LocalDate)\">"
+ "between</a></span>&#8203;(java.time.LocalDate&nbsp;startDateInclusive,\n"
+ " java.time.LocalDate&nbsp;endDateExclusive)</code></th>");
+ "java.time.LocalDate&nbsp;endDateExclusive)</code></th>");
checkOutput("pkg1/Implementer.html", false,
"<h3>Methods inherited from interface&nbsp;pkg1.<a href=\"Interface.html\""

@ -57,8 +57,9 @@ public class TestMemberSummary extends JavadocTester {
+ "<th class=\"colSecond\" scope=\"row\"><code><span class=\"memberNameLink\"><a href=\"#returnTypeTest()\">"
+ "returnTypeTest</a></span>()</code>",
// Check return type in member detail.
"<pre class=\"methodSignature\">public&nbsp;<a href=\"PublicChild.html\" title=\"class in pkg\">"
+ "PublicChild</a>&nbsp;returnTypeTest()</pre>",
"<div class=\"memberSignature\"><span class=\"modifiers\">public</span>&nbsp;"
+ "<span class=\"returnType\"><a href=\"PublicChild.html\" title=\"class in pkg\">"
+ "PublicChild</a></span>&nbsp;<span class=\"memberName\">returnTypeTest</span>()</div>",
"<th class=\"colConstructorName\" scope=\"row\"><code><span class=\"memberNameLink\">"
+ "<a href=\"#%3Cinit%3E()\">PublicChild</a></span>()</code></th>");

@ -0,0 +1,142 @@
/*
* Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* @test
* @bug 8214126
* @summary Method signatures not formatted correctly in browser
* @library ../../lib/
* @modules jdk.javadoc/jdk.javadoc.internal.tool
* @build javadoc.tester.*
* @run main TestMethodSignature
*/
import javadoc.tester.JavadocTester;
public class TestMethodSignature extends JavadocTester {
public static void main(String... args) throws Exception {
TestMethodSignature tester = new TestMethodSignature();
tester.runTests();
}
@Test
public void test() {
javadoc("-d", "out",
"-sourcepath", testSrc,
"pkg");
checkExit(Exit.OK);
checkOutput("pkg/C.html", true,
"<div class=\"memberSignature\"><span class=\"annotations\">"
+ "@Generated(\"GeneratedConstructor\")\n"
+ "</span><span class=\"modifiers\">public</span>&nbsp;"
+ "<span class=\"memberName\">C</span>()</div>",
"<div class=\"memberSignature\"><span class=\"modifiers\">public static</span>"
+ "&nbsp;<span class=\"returnType\">void</span>&nbsp;<span class=\"memberName\">"
+ "simpleMethod</span>&#8203;(<span class=\"arguments\">int&nbsp;i,\n"
+ "java.lang.String&nbsp;s,\nboolean&nbsp;b)</span></div>",
"<div class=\"memberSignature\"><span class=\"annotations\">@Generated"
+ "(value=\"SomeGeneratedName\",\n date=\"a date\",\n"
+ " comments=\"some comment about the method below\")\n"
+ "</span><span class=\"modifiers\">public static</span>&nbsp;<span "
+ "class=\"returnType\">void</span>&nbsp;<span class=\"memberName\">annotatedMethod"
+ "</span>&#8203;(<span class=\"arguments\">int&nbsp;i,\n"
+ "java.lang.String&nbsp;s,\nboolean&nbsp;b)</span></div>",
"<div class=\"memberSignature\"><span class=\"modifiers\">public static</span>"
+ "&nbsp;<span class=\"typeParametersLong\">&lt;T1 extends java.lang.AutoCloseable,&#8203;\n"
+ "T2 extends java.lang.AutoCloseable,&#8203;\n"
+ "T3 extends java.lang.AutoCloseable,&#8203;\n"
+ "T4 extends java.lang.AutoCloseable,&#8203;\n"
+ "T5 extends java.lang.AutoCloseable,&#8203;\n"
+ "T6 extends java.lang.AutoCloseable,&#8203;\n"
+ "T7 extends java.lang.AutoCloseable,&#8203;\n"
+ "T8 extends java.lang.AutoCloseable&gt;</span>\n"
+ "<span class=\"returnType\"><a href=\"C.With8Types.html\" "
+ "title=\"class in pkg\">C.With8Types</a>&lt;T1,&#8203;T2,&#8203;T3,"
+ "&#8203;T4,&#8203;T5,&#8203;T6,&#8203;T7,&#8203;T8&gt;</span>&nbsp;"
+ "<span class=\"memberName\">bigGenericMethod</span>&#8203;("
+ "<span class=\"arguments\"><a href=\"C.F0.html\" "
+ "title=\"interface in pkg\">C.F0</a>&lt;? extends T1&gt;&nbsp;t1,\n"
+ "<a href=\"C.F0.html\" title=\"interface in pkg\">"
+ "C.F0</a>&lt;? extends T2&gt;&nbsp;t2,\n"
+ "<a href=\"C.F0.html\" title=\"interface in pkg\">"
+ "C.F0</a>&lt;? extends T3&gt;&nbsp;t3,\n"
+ "<a href=\"C.F0.html\" title=\"interface in pkg\">"
+ "C.F0</a>&lt;? extends T4&gt;&nbsp;t4,\n"
+ "<a href=\"C.F0.html\" title=\"interface in pkg\">"
+ "C.F0</a>&lt;? extends T5&gt;&nbsp;t5,\n"
+ "<a href=\"C.F0.html\" title=\"interface in pkg\">"
+ "C.F0</a>&lt;? extends T6&gt;&nbsp;t6,\n"
+ "<a href=\"C.F0.html\" title=\"interface in pkg\">"
+ "C.F0</a>&lt;? extends T7&gt;&nbsp;t7,\n"
+ "<a href=\"C.F0.html\" title=\"interface in pkg\">"
+ "C.F0</a>&lt;? extends T8&gt;&nbsp;t8)</span>\n"
+ " "
+ "throws <span class=\"exceptions\">java.lang.IllegalArgumentException,\n"
+ "java.lang.IllegalStateException</span></div>",
"<div class=\"memberSignature\"><span class=\"annotations\">"
+ "@Generated(value=\"SomeGeneratedName\",\n"
+ " date=\"a date\",\n"
+ " comments=\"some comment about the method below\")\n"
+ "</span><span class=\"modifiers\">public static</span>&nbsp;"
+ "<span class=\"typeParametersLong\">"
+ "&lt;T1 extends java.lang.AutoCloseable,&#8203;\n"
+ "T2 extends java.lang.AutoCloseable,&#8203;\n"
+ "T3 extends java.lang.AutoCloseable,&#8203;\n"
+ "T4 extends java.lang.AutoCloseable,&#8203;\n"
+ "T5 extends java.lang.AutoCloseable,&#8203;\n"
+ "T6 extends java.lang.AutoCloseable,&#8203;\n"
+ "T7 extends java.lang.AutoCloseable,&#8203;\n"
+ "T8 extends java.lang.AutoCloseable&gt;</span>\n"
+ "<span class=\"returnType\"><a href=\"C.With8Types.html\" "
+ "title=\"class in pkg\">C.With8Types</a>&lt;T1,&#8203;T2,&#8203;T3,"
+ "&#8203;T4,&#8203;T5,&#8203;T6,&#8203;T7,&#8203;T8&gt;</span>&nbsp;"
+ "<span class=\"memberName\">bigGenericAnnotatedMethod</span>&#8203;("
+ "<span class=\"arguments\"><a href=\"C.F0.html\" "
+ "title=\"interface in pkg\">C.F0</a>&lt;? extends T1&gt;&nbsp;t1,\n"
+ "<a href=\"C.F0.html\" title=\"interface in pkg\">"
+ "C.F0</a>&lt;? extends T2&gt;&nbsp;t2,\n"
+ "<a href=\"C.F0.html\" title=\"interface in pkg\">"
+ "C.F0</a>&lt;? extends T3&gt;&nbsp;t3,\n"
+ "<a href=\"C.F0.html\" title=\"interface in pkg\">"
+ "C.F0</a>&lt;? extends T4&gt;&nbsp;t4,\n"
+ "<a href=\"C.F0.html\" title=\"interface in pkg\">"
+ "C.F0</a>&lt;? extends T5&gt;&nbsp;t5,\n"
+ "<a href=\"C.F0.html\" title=\"interface in pkg\">"
+ "C.F0</a>&lt;? extends T6&gt;&nbsp;t6,\n"
+ "<a href=\"C.F0.html\" title=\"interface in pkg\">"
+ "C.F0</a>&lt;? extends T7&gt;&nbsp;t7,\n"
+ "<a href=\"C.F0.html\" title=\"interface in pkg\">"
+ "C.F0</a>&lt;? extends T8&gt;&nbsp;t8)</span>\n"
+ " "
+ "throws <span class=\"exceptions\">java.lang.IllegalArgumentException,\n"
+ "java.lang.IllegalStateException</span></div>\n"
+ "<div class=\"block\">Generic method with eight type args and annotation.</div>");
}
}

@ -0,0 +1,159 @@
/*
* Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package pkg;
import javax.annotation.processing.Generated;
/**
* Test class for rendering of method signatures. This provides some pathologically
* complex method signatures that require special handling. Other features are
* covered by other tests.
*/
public class C {
/**
* Annotated constructor.
*/
@Generated(value = "GeneratedConstructor")
public C() {}
public interface F0<T> {
T apply() throws Exception;
}
public static class With8Types<T1, T2, T3, T4, T5, T6, T7, T8> { }
/**
* Simple method.
*
* @param i param 1
* @param s param 2
* @param b param 3
*/
public static void simpleMethod(int i, String s, boolean b) {}
/**
* Annotated method.
*
* @param i param 1
* @param s param 2
* @param b param 3
*/
@Generated(
value = "SomeGeneratedName",
date = "a date",
comments = "some comment about the method below")
public static void annotatedMethod(int i, String s, boolean b) {}
/**
* Generic method with eight type args.
*
* @param <T1> type 1
* @param <T2> type 2
* @param <T3> type 3
* @param <T4> type 4
* @param <T5> type 5
* @param <T6> type 6
* @param <T7> type 7
* @param <T8> type 8
* @param t1 param 1
* @param t2 param 2
* @param t3 param 3
* @param t4 param 4
* @param t5 param 5
* @param t6 param 6
* @param t7 param 7
* @param t8 param 8
* @return null
*/
public static
<T1 extends AutoCloseable,
T2 extends AutoCloseable,
T3 extends AutoCloseable,
T4 extends AutoCloseable,
T5 extends AutoCloseable,
T6 extends AutoCloseable,
T7 extends AutoCloseable,
T8 extends AutoCloseable>
With8Types<T1, T2, T3, T4, T5, T6, T7, T8> bigGenericMethod(
F0<? extends T1> t1,
F0<? extends T2> t2,
F0<? extends T3> t3,
F0<? extends T4> t4,
F0<? extends T5> t5,
F0<? extends T6> t6,
F0<? extends T7> t7,
F0<? extends T8> t8)
throws IllegalArgumentException, IllegalStateException { return null; }
/**
* Generic method with eight type args and annotation.
*
* @param <T1> type 1
* @param <T2> type 2
* @param <T3> type 3
* @param <T4> type 4
* @param <T5> type 5
* @param <T6> type 6
* @param <T7> type 7
* @param <T8> type 8
* @param t1 param 1
* @param t2 param 2
* @param t3 param 3
* @param t4 param 4
* @param t5 param 5
* @param t6 param 6
* @param t7 param 7
* @param t8 param 8
* @return null
*/
@Generated(
value = "SomeGeneratedName",
date = "a date",
comments = "some comment about the method below")
public static
<T1 extends AutoCloseable,
T2 extends AutoCloseable,
T3 extends AutoCloseable,
T4 extends AutoCloseable,
T5 extends AutoCloseable,
T6 extends AutoCloseable,
T7 extends AutoCloseable,
T8 extends AutoCloseable>
With8Types<T1, T2, T3, T4, T5, T6, T7, T8> bigGenericAnnotatedMethod(
F0<? extends T1> t1,
F0<? extends T2> t2,
F0<? extends T3> t3,
F0<? extends T4> t4,
F0<? extends T5> t5,
F0<? extends T6> t6,
F0<? extends T7> t7,
F0<? extends T8> t8)
throws IllegalArgumentException, IllegalStateException { return null; }
}

@ -81,8 +81,10 @@ public class TestNewLanguageFeatures extends JavadocTester {
"Returns the enum constant of this type with the specified name",
"Overloaded valueOf() method has correct documentation.",
"Overloaded values method has correct documentation.",
"<pre class=\"methodSignature\">public static&nbsp;<a href=\"Coin.html\" title=\"enum in pkg\">Coin</a>" +
"&nbsp;valueOf&#8203;(java.lang.String&nbsp;name)</pre>\n" +
"<div class=\"memberSignature\"><span class=\"modifiers\">public static</span>&nbsp;"
+ "<span class=\"returnType\"><a href=\"Coin.html\" title=\"enum in pkg\">Coin</a></span>&nbsp;"
+ "<span class=\"memberName\">valueOf</span>&#8203;("
+ "<span class=\"arguments\">java.lang.String&nbsp;name)</span></div>\n" +
"<div class=\"block\">Returns the enum constant of this type with the specified name.\n" +
"The string must match <i>exactly</i> an identifier used to declare an\n" +
"enum constant in this type. (Extraneous whitespace characters are \n" +
@ -131,8 +133,11 @@ public class TestNewLanguageFeatures extends JavadocTester {
+ "<dd><code>V</code> - This is the second type "
+ "parameter.",
// Signature of method with type parameters
"public&nbsp;&lt;T extends java.util.List,&#8203;V&gt;&nbsp;"
+ "java.lang.String[]&nbsp;methodThatHasTypeParameters",
"<div class=\"memberSignature\"><span class=\"modifiers\">public</span>&nbsp;"
+ "<span class=\"typeParameters\">&lt;T extends java.util.List,&#8203;\nV&gt;</span>\n"
+ "<span class=\"returnType\">java.lang.String[]</span>&nbsp;<span class=\"memberName\">"
+ "methodThatHasTypeParameters</span>&#8203;(<span class=\"arguments\">T&nbsp;param1,\n"
+ "V&nbsp;param2)</span></div>",
// Method that returns TypeParameters
"<td class=\"colFirst\"><code><a href=\"TypeParameters.html\" "
+ "title=\"type parameter in TypeParameters\">E</a>[]</code></td>\n"
@ -140,10 +145,11 @@ public class TestNewLanguageFeatures extends JavadocTester {
+ "<a href=\"#methodThatReturnsTypeParameterA(E%5B%5D)\">"
+ "methodThatReturnsTypeParameterA</a></span>&#8203;(<a href=\"TypeParameters.html\" "
+ "title=\"type parameter in TypeParameters\">E</a>[]&nbsp;e)</code>",
"<pre class=\"methodSignature\">public&nbsp;<a href=\"TypeParameters.html\" "
+ "title=\"type parameter in TypeParameters\">E</a>[]&nbsp;"
+ "methodThatReturnsTypeParameterA&#8203;(<a href=\"TypeParameters.html\" "
+ "title=\"type parameter in TypeParameters\">E</a>[]&nbsp;e)</pre>\n",
"<div class=\"memberSignature\"><span class=\"modifiers\">public</span>&nbsp;<span "
+ "class=\"returnType\"><a href=\"TypeParameters.html\" title=\"type parameter in TypeParameters\">"
+ "E</a>[]</span>&nbsp;<span class=\"memberName\">methodThatReturnsTypeParameterA</span>&#8203;("
+ "<span class=\"arguments\"><a href=\"TypeParameters.html\" title=\"type parameter in TypeParameters\">"
+ "E</a>[]&nbsp;e)</span></div>\n",
"<td class=\"colFirst\"><code>&lt;T extends java.lang.Object &amp; java.lang.Comparable&lt;? super T&gt;&gt;"
+ "<br>T</code></td>\n"
+ "<th class=\"colSecond\" scope=\"row\"><code><span class=\"memberNameLink\">"
@ -210,7 +216,10 @@ public class TestNewLanguageFeatures extends JavadocTester {
// Handle multiple bounds.
//==============================================================
checkOutput("pkg/MultiTypeParameters.html", true,
"public&nbsp;&lt;T extends java.lang.Number &amp; java.lang.Runnable&gt;&nbsp;T&nbsp;foo&#8203;(T&nbsp;t)");
"<div class=\"memberSignature\"><span class=\"modifiers\">public</span>&nbsp;"
+ "<span class=\"typeParameters\">&lt;T extends java.lang.Number &amp; java.lang.Runnable&gt;</span>\n"
+ "<span class=\"returnType\">T</span>&nbsp;<span class=\"memberName\">foo</span>&#8203;"
+ "(<span class=\"arguments\">T&nbsp;t)</span></div>");
//==============================================================
// Test Class-Use Documentation for Type Parameters.
@ -531,45 +540,42 @@ public class TestNewLanguageFeatures extends JavadocTester {
+ "AnnotationTypeUsage</span>\n"
+ "extends java.lang.Object</pre>",
// FIELD
"<pre><a href=\"AnnotationType.html\" "
+ "title=\"annotation in pkg\">@AnnotationType</a>("
+ "<a href=\"AnnotationType.html#optional()\">optional</a>"
+ "=\"Field Annotation\",\n"
+ " <a href=\"AnnotationType.html#required()\">"
+ "required</a>=1994)\n"
+ "public&nbsp;int field</pre>",
"<div class=\"memberSignature\"><span class=\"annotations\"><a href=\"AnnotationType.html\" "
+ "title=\"annotation in pkg\">@AnnotationType</a>(<a href=\"AnnotationType.html#optional()\">"
+ "optional</a>=\"Field Annotation\",\n"
+ " <a href=\"AnnotationType.html#required()\">required</a>=1994)\n"
+ "</span><span class=\"modifiers\">public</span>&nbsp;<span class=\"returnType\">int</span>"
+ "&nbsp;<span class=\"memberName\">field</span></div>",
// CONSTRUCTOR
"<pre><a href=\"AnnotationType.html\" "
+ "title=\"annotation in pkg\">@AnnotationType</a>("
+ "<a href=\"AnnotationType.html#optional()\">optional</a>"
+ "=\"Constructor Annotation\",\n"
+ " <a href=\"AnnotationType.html#required()\">"
+ "required</a>=1994)\n"
+ "public&nbsp;AnnotationTypeUsage()</pre>",
"<div class=\"memberSignature\"><span class=\"annotations\"><a href=\"AnnotationType.html\" "
+ "title=\"annotation in pkg\">@AnnotationType</a>(<a href=\"AnnotationType.html#optional()\">"
+ "optional</a>=\"Constructor Annotation\",\n"
+ " <a href=\"AnnotationType.html#required()\">required</a>=1994)\n"
+ "</span><span class=\"modifiers\">public</span>&nbsp;"
+ "<span class=\"memberName\">AnnotationTypeUsage</span>()</div>",
// METHOD
"<pre class=\"methodSignature\"><a href=\"AnnotationType.html\" "
+ "title=\"annotation in pkg\">@AnnotationType</a>("
+ "<a href=\"AnnotationType.html#optional()\">optional</a>"
+ "=\"Method Annotation\",\n"
+ " <a href=\"AnnotationType.html#required()\">"
+ "required</a>=1994)\n"
+ "public&nbsp;void&nbsp;method()</pre>",
"<div class=\"memberSignature\"><span class=\"annotations\"><a href=\"AnnotationType.html\" "
+ "title=\"annotation in pkg\">@AnnotationType</a>(<a href=\"AnnotationType.html#optional()\">"
+ "optional</a>=\"Method Annotation\",\n"
+ " <a href=\"AnnotationType.html#required()\">required</a>=1994)\n"
+ "</span><span class=\"modifiers\">public</span>&nbsp;<span class=\"returnType\">"
+ "void</span>&nbsp;<span class=\"memberName\">method</span>()</div>",
// METHOD PARAMS
"<pre class=\"methodSignature\">public&nbsp;void&nbsp;methodWithParams&#8203;("
+ "<a href=\"AnnotationType.html\" title=\"annotation in pkg\">"
+ "@AnnotationType</a>(<a href=\"AnnotationType.html#optional()\">"
+ "optional</a>=\"Parameter Annotation\",<a "
+ "href=\"AnnotationType.html#required()\">required</a>=1994)\n"
+ " int&nbsp;documented,\n"
+ " int&nbsp;undocmented)</pre>",
"<div class=\"memberSignature\"><span class=\"modifiers\">public</span>&nbsp;<span "
+ "class=\"returnType\">void</span>&nbsp;<span class=\"memberName\">methodWithParams</span>"
+ "&#8203;(<span class=\"arguments\"><a href=\"AnnotationType.html\" title=\"annotation in pkg\">"
+ "@AnnotationType</a>(<a href=\"AnnotationType.html#optional()\">optional</a>"
+ "=\"Parameter Annotation\",<a href=\"AnnotationType.html#required()\">required</a>=1994)\n"
+ "int&nbsp;documented,\n"
+ "int&nbsp;undocmented)</span></div>",
// CONSTRUCTOR PARAMS
"<pre>public&nbsp;AnnotationTypeUsage&#8203;(<a "
+ "href=\"AnnotationType.html\" title=\"annotation in pkg\">"
+ "@AnnotationType</a>(<a href=\"AnnotationType.html#optional()\">"
+ "optional</a>=\"Constructor Param Annotation\",<a "
+ "href=\"AnnotationType.html#required()\">required</a>=1994)\n"
+ " int&nbsp;documented,\n"
+ " int&nbsp;undocmented)</pre>");
"<div class=\"memberSignature\"><span class=\"modifiers\">public</span>&nbsp;"
+ "<span class=\"memberName\">AnnotationTypeUsage</span>&#8203;(<span class=\"arguments\">"
+ "<a href=\"AnnotationType.html\" title=\"annotation in pkg\">@AnnotationType</a>("
+ "<a href=\"AnnotationType.html#optional()\">optional</a>=\"Constructor Param Annotation\","
+ "<a href=\"AnnotationType.html#required()\">required</a>=1994)\n"
+ "int&nbsp;documented,\n"
+ "int&nbsp;undocmented)</span></div>");
//=================================
// Annotatation Type Usage

@ -197,15 +197,16 @@ public class TestOptions extends JavadocTester {
+ "<a id=\"DEFAULT_NAME\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<pre>static final&nbsp;java.lang.String&nbsp;"
+ "<a href=\"../src-html/linksource/AnnotationTypeField.html#line.32\">"
+ "DEFAULT_NAME</a></pre>",
+ "<div class=\"memberSignature\"><span class=\"modifiers\">static final</span>&nbsp;"
+ "<span class=\"returnType\">java.lang.String</span>&nbsp;<span class=\"memberName\">"
+ "<a href=\"../src-html/linksource/AnnotationTypeField.html#line.32\">DEFAULT_NAME</a></span></div>",
"<h3>name</h3>\n"
+ "<a id=\"name()\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<pre>java.lang.String&nbsp;<a href="
+ "\"../src-html/linksource/AnnotationTypeField.html#line.34\">name</a></pre>");
+ "<div class=\"memberSignature\"><span class=\"returnType\">java.lang.String</span>&nbsp;"
+ "<span class=\"memberName\"><a href=\"../src-html/linksource/AnnotationTypeField.html#line.34\">"
+ "name</a></span></div>");
checkOutput("src-html/linksource/AnnotationTypeField.html", true,
"<title>Source code</title>",
@ -215,10 +216,9 @@ public class TestOptions extends JavadocTester {
checkOutput("linksource/Properties.html", true,
"<pre>public class <a href=\"../src-html/linksource/Properties.html#line.29\">"
+ "Properties</a>",
"<pre>public&nbsp;java.lang.Object <a href="
+ "\"../src-html/linksource/Properties.html#line.31\">someProperty</a></pre>",
"<pre class=\"methodSignature\">public&nbsp;java.lang.Object&nbsp;<a href="
+ "\"../src-html/linksource/Properties.html#line.31\">someProperty</a>()</pre>");
"<div class=\"memberSignature\"><span class=\"modifiers\">public</span>&nbsp;"
+ "<span class=\"returnType\">java.lang.Object</span>&nbsp;<span class=\"memberName\">"
+ "<a href=\"../src-html/linksource/Properties.html#line.31\">someProperty</a></span></div>");
checkOutput("src-html/linksource/Properties.html", true,
"<title>Source code</title>",
@ -228,12 +228,15 @@ public class TestOptions extends JavadocTester {
checkOutput("linksource/SomeClass.html", true,
"<pre>public class <a href=\"../src-html/linksource/SomeClass.html#line.29\">"
+ "SomeClass</a>\nextends java.lang.Object</pre>",
"<pre>public&nbsp;int <a href=\"../src-html/linksource/SomeClass.html#line.31\">"
+ "field</a></pre>",
"<pre>public&nbsp;<a href=\"../src-html/linksource/SomeClass.html#line.33\">"
+ "SomeClass</a>()</pre>",
"<pre class=\"methodSignature\">public&nbsp;int&nbsp;<a href=\"../src-html/linksource/SomeClass.html#line.36\">"
+ "method</a>()</pre>");
"<div class=\"memberSignature\"><span class=\"modifiers\">public</span>&nbsp;"
+ "<span class=\"returnType\">int</span>&nbsp;<span class=\"memberName\">"
+ "<a href=\"../src-html/linksource/SomeClass.html#line.31\">field</a></span></div>",
"<div class=\"memberSignature\"><span class=\"modifiers\">public</span>&nbsp;"
+ "<span class=\"memberName\"><a href=\"../src-html/linksource/SomeClass.html#line.33\">"
+ "SomeClass</a></span>()</div>",
"<div class=\"memberSignature\"><span class=\"modifiers\">public</span>&nbsp;"
+ "<span class=\"returnType\">int</span>&nbsp;<span class=\"memberName\">"
+ "<a href=\"../src-html/linksource/SomeClass.html#line.36\">method</a></span>()</div>");
checkOutput("src-html/linksource/SomeClass.html", true,
"<title>Source code</title>",
@ -247,12 +250,14 @@ public class TestOptions extends JavadocTester {
+ "public int method() {</a>");
checkOutput("linksource/SomeEnum.html", true,
"<pre>public static final&nbsp;<a href=\"SomeEnum.html\" "
+ "title=\"enum in linksource\">SomeEnum</a> <a href="
+ "\"../src-html/linksource/SomeEnum.html#line.29\">VALUE1</a></pre>",
"<pre>public static final&nbsp;<a href=\"SomeEnum.html\" "
+ "title=\"enum in linksource\">SomeEnum</a> <a href="
+ "\"../src-html/linksource/SomeEnum.html#line.30\">VALUE2</a></pre>");
"<div class=\"memberSignature\"><span class=\"modifiers\">public static final</span>&nbsp;"
+ "<span class=\"returnType\"><a href=\"SomeEnum.html\" title=\"enum in linksource\">"
+ "SomeEnum</a></span>&nbsp;<span class=\"memberName\">"
+ "<a href=\"../src-html/linksource/SomeEnum.html#line.29\">VALUE1</a></span></div>",
"<div class=\"memberSignature\"><span class=\"modifiers\">public static final</span>&nbsp;"
+ "<span class=\"returnType\"><a href=\"SomeEnum.html\" title=\"enum in linksource\">"
+ "SomeEnum</a></span>&nbsp;<span class=\"memberName\">"
+ "<a href=\"../src-html/linksource/SomeEnum.html#line.30\">VALUE2</a></span></div>");
checkOutput("src-html/linksource/SomeEnum.html", true,
"<span class=\"sourceLineNo\">029</span><a id=\"line.29\"> VALUE1,</a>",

@ -516,10 +516,14 @@ public class TestOrdering extends JavadocTester {
checkOrder("pkg5/AnnoFieldTest.html",
"<h2>Field Details</h2>",
"<pre>static final&nbsp;int&nbsp;one</pre>",
"<pre>static final&nbsp;int&nbsp;two</pre>",
"<pre>static final&nbsp;int&nbsp;three</pre>",
"<pre>static final&nbsp;int&nbsp;four</pre>");
"<div class=\"memberSignature\"><span class=\"modifiers\">static final</span>&nbsp;"
+ "<span class=\"returnType\">int</span>&nbsp;<span class=\"memberName\">one</span></div>",
"<div class=\"memberSignature\"><span class=\"modifiers\">static final</span>&nbsp;"
+ "<span class=\"returnType\">int</span>&nbsp;<span class=\"memberName\">two</span></div>",
"<div class=\"memberSignature\"><span class=\"modifiers\">static final</span>&nbsp;"
+ "<span class=\"returnType\">int</span>&nbsp;<span class=\"memberName\">three</span></div>",
"<div class=\"memberSignature\"><span class=\"modifiers\">static final</span>&nbsp;"
+ "<span class=\"returnType\">int</span>&nbsp;<span class=\"memberName\">four</span></div>");
checkOrder("pkg5/AnnoOptionalTest.html",
"<h2>Optional Element Summary</h2>",

@ -57,7 +57,8 @@ public class TestBadOverride extends JavadocTester {
+ "<a id=\"toString()\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<pre class=\"methodSignature\">public&nbsp;void&nbsp;toString()</pre>\n"
+ "<div class=\"memberSignature\"><span class=\"modifiers\">public</span>&nbsp;"
+ "<span class=\"returnType\">void</span>&nbsp;<span class=\"memberName\">toString</span>()</div>\n"
+ "<div class=\"block\">Why can't I do this ?</div>\n"
+ "</section>");
}

@ -57,9 +57,11 @@ public class TestOverriddenDeprecatedMethods extends JavadocTester {
checkOrder("pkg1/SubClass.html",
"Method Detail",
"@Deprecated\npublic&nbsp;void&nbsp;func1()",
"<span class=\"annotations\">@Deprecated\n</span><span class=\"modifiers\">public</span>&nbsp;"
+ "<span class=\"returnType\">void</span>&nbsp;<span class=\"memberName\">func1</span>()",
"<div class=\"deprecationBlock\"><span class=\"deprecatedLabel\">Deprecated.</span></div>",
"@Deprecated\npublic&nbsp;void&nbsp;func2()",
"<span class=\"annotations\">@Deprecated\n</span><span class=\"modifiers\">public</span>&nbsp;"
+ "<span class=\"returnType\">void</span>&nbsp;<span class=\"memberName\">func2</span>()",
"<div class=\"deprecationBlock\"><span class=\"deprecatedLabel\">Deprecated.</span></div>",
"<div class=\"block\">deprecated with comments</div>");
}

@ -70,7 +70,10 @@ public class TestPrivateClasses extends JavadocTester {
+ "<div class=\"inheritance\">pkg.PublicChild</div>\n"
+ "</div>",
// Method is documented as though it is declared in the inheriting method.
"<pre class=\"methodSignature\">public&nbsp;void&nbsp;methodInheritedFromParent&#8203;(int&nbsp;p1)",
"<div class=\"memberSignature\"><span class=\"modifiers\">public</span>&nbsp;"
+ "<span class=\"returnType\">void</span>&nbsp;<span class=\"memberName\">"
+ "methodInheritedFromParent</span>&#8203;(<span class=\"arguments\">int&nbsp;p1)</span>\n"
+ " throws <span class=\"exceptions\">java.lang.Exception</span></div>",
"<dl>\n"
+ "<dt>All Implemented Interfaces:</dt>\n"
+ "<dd><code><a href=\"PublicInterface.html\" title=\"interface in pkg\">"

@ -50,10 +50,10 @@ public class TestProperty extends JavadocTester {
checkExit(Exit.OK);
checkOutput("pkg/MyClass.html", true,
"<pre>public final&nbsp;<a href=\"ObjectProperty.html\" "
+ "title=\"class in pkg\">ObjectProperty</a>"
+ "&lt;<a href=\"MyObj.html\" "
+ "title=\"class in pkg\">MyObj</a>&gt; goodProperty</pre>\n"
"<div class=\"memberSignature\"><span class=\"modifiers\">public final</span>&nbsp;"
+ "<span class=\"returnType\"><a href=\"ObjectProperty.html\" title=\"class in pkg\">"
+ "ObjectProperty</a>&lt;<a href=\"MyObj.html\" title=\"class in pkg\">MyObj</a>&gt;</span>"
+ "&nbsp;<span class=\"memberName\">goodProperty</span></div>\n"
+ "<div class=\"block\">This is an Object property where the "
+ "Object is a single Object.</div>\n"
+ "<dl>\n"
@ -63,10 +63,10 @@ public class TestProperty extends JavadocTester {
+ "<code>setGood(MyObj)</code></a></dd>\n"
+ "</dl>",
"<pre>public final&nbsp;<a href=\"ObjectProperty.html\" "
+ "title=\"class in pkg\">ObjectProperty</a>"
+ "&lt;<a href=\"MyObj.html\" "
+ "title=\"class in pkg\">MyObj</a>[]&gt; badProperty</pre>\n"
"<div class=\"memberSignature\"><span class=\"modifiers\">public final</span>&nbsp;"
+ "<span class=\"returnType\"><a href=\"ObjectProperty.html\" title=\"class in pkg\">"
+ "ObjectProperty</a>&lt;<a href=\"MyObj.html\" title=\"class in pkg\">MyObj</a>[]&gt;</span>"
+ "&nbsp;<span class=\"memberName\">badProperty</span></div>\n"
+ "<div class=\"block\">This is an Object property where the "
+ "Object is an array.</div>\n"
+ "<dl>\n"
@ -94,11 +94,11 @@ public class TestProperty extends JavadocTester {
);
checkOutput("pkg/MyClassT.html", true,
"<pre>public final&nbsp;<a href=\"ObjectProperty.html\" "
+ "title=\"class in pkg\">ObjectProperty</a>"
+ "&lt;java.util.List&lt;<a href=\"MyClassT.html\" "
+ "title=\"type parameter in MyClassT\">T</a>&gt;&gt; "
+ "listProperty</pre>\n"
"<div class=\"memberSignature\"><span class=\"modifiers\">public final</span>&nbsp;"
+ "<span class=\"returnType\"><a href=\"ObjectProperty.html\" title=\"class in pkg\">"
+ "ObjectProperty</a>&lt;java.util.List&lt;<a href=\"MyClassT.html\" "
+ "title=\"type parameter in MyClassT\">T</a>&gt;&gt;</span>&nbsp;"
+ "<span class=\"memberName\">listProperty</span></div>\n"
+ "<div class=\"block\">This is an Object property where the "
+ "Object is a single <code>List&lt;T&gt;</code>.</div>\n"
+ "<dl>\n"

@ -73,10 +73,11 @@ public class TestSerializedFormWithClassFile extends JavadocTester {
checkExit(Exit.OK);
checkOutput("serialized-form.html", true,
"<pre class=\"methodSignature\">public&nbsp;void&nbsp;readObject&#8203;"
+ "(java.io.ObjectInputStream&nbsp;arg0)\n"
+ " throws java.lang.ClassNotFoundException,\n"
+ " java.io.IOException</pre>\n");
"<div class=\"memberSignature\"><span class=\"modifiers\">public</span>&nbsp;"
+ "<span class=\"returnType\">void</span>&nbsp;<span class=\"memberName\">readObject</span>"
+ "&#8203;(<span class=\"arguments\">java.io.ObjectInputStream&nbsp;arg0)</span>\n"
+ " throws <span class=\"exceptions\">java.lang.ClassNotFoundException,\n"
+ "java.io.IOException</span></div>\n");
}
void createTestClass(Path base, Path srcDir) throws Exception {

@ -165,9 +165,9 @@ public class TestStylesheet extends JavadocTester {
+ "th.colFirst a:link, th.colFirst a:visited,\n"
+ "th.colSecond a:link, th.colSecond a:visited,\n"
+ "th.colConstructorName a:link, th.colConstructorName a:visited,\n"
+ "th.colDeprecatedItemName a:link, th.colDeprecatedItemName a:visited, \n"
+ ".constantValuesContainer td a:link, .constantValuesContainer td a:visited, \n"
+ ".allClassesContainer td a:link, .allClassesContainer td a:visited, \n"
+ "th.colDeprecatedItemName a:link, th.colDeprecatedItemName a:visited,\n"
+ ".constantValuesContainer td a:link, .constantValuesContainer td a:visited,\n"
+ ".allClassesContainer td a:link, .allClassesContainer td a:visited,\n"
+ ".allPackagesContainer td a:link, .allPackagesContainer td a:visited {\n"
+ " font-weight:bold;\n"
+ "}",

@ -90,7 +90,8 @@ public class TestSummaryTag extends JavadocTester {
+ "<a id=\"m3()\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<pre class=\"methodSignature\">public&nbsp;void&nbsp;m3()</pre>\n"
+ "<div class=\"memberSignature\"><span class=\"modifiers\">public</span>&nbsp;"
+ "<span class=\"returnType\">void</span>&nbsp;<span class=\"memberName\">m3</span>()</div>\n"
+ "<div class=\"block\">First sentence some text maybe second sentence.</div>\n"
+ "</section>\n"
);

@ -115,249 +115,274 @@ public class TestTypeAnnotations extends JavadocTester {
// Test for type annotations on fields (Fields.java).
checkOutput("typeannos/DefaultScope.html", true,
"<pre><a href=\"Parameterized.html\" title=\"class in "
+ "typeannos\">Parameterized</a>&lt;<a href=\"FldA.html\" "
+ "title=\"annotation in typeannos\">@FldA</a> java.lang.String,&#8203;<a "
+ "href=\"FldB.html\" title=\"annotation in typeannos\">"
+ "@FldB</a> java.lang.String&gt; bothTypeArgs</pre>",
"<div class=\"memberSignature\"><span class=\"returnType\"><a href=\"Parameterized.html\" "
+ "title=\"class in typeannos\">Parameterized</a>&lt;<a href=\"FldA.html\" "
+ "title=\"annotation in typeannos\">@FldA</a> java.lang.String,&#8203;"
+ "<a href=\"FldB.html\" title=\"annotation in typeannos\">@FldB</a> java.lang.String&gt;"
+ "</span>&nbsp;<span class=\"memberName\">bothTypeArgs</span></div>",
"<pre><a href=\"FldA.html\" title=\"annotation in "
+ "typeannos\">@FldA</a> java.lang.String <a href=\""
+ "FldB.html\" title=\"annotation in typeannos\">@FldB</a> [] "
+ "array1Deep</pre>",
"<div class=\"memberSignature\"><span class=\"returnType\"><a href=\"FldA.html\" "
+ "title=\"annotation in typeannos\">@FldA</a> java.lang.String <a href=\"FldB.html\" "
+ "title=\"annotation in typeannos\">@FldB</a> []</span>&nbsp;"
+ "<span class=\"memberName\">array1Deep</span></div>",
"<pre>java.lang.String <a href=\"FldB.html\" "
+ "title=\"annotation in typeannos\">@FldB</a> [][] array2SecondOld</pre>",
"<div class=\"memberSignature\"><span class=\"returnType\">java.lang.String "
+ "<a href=\"FldB.html\" title=\"annotation in typeannos\">@FldB</a> [][]</span>&nbsp;"
+ "<span class=\"memberName\">array2SecondOld</span></div>",
// When JDK-8068737, we should change the order
"<pre><a href=\"FldD.html\" title=\"annotation in typeannos\">"
+ "@FldD</a> java.lang.String "
+ "<a href=\"FldC.html\" title=\"annotation in typeannos\">@FldC</a> "
+ "<a href=\"FldB.html\" title=\"annotation in typeannos\">@FldB</a> [] "
+ "<a href=\"FldC.html\" title=\"annotation in typeannos\">@FldC</a> "
+ "<a href=\"FldA.html\" title=\"annotation in typeannos\">@FldA</a> [] "
+ "array2Deep</pre>");
"<div class=\"memberSignature\"><span class=\"returnType\"><a href=\"FldD.html\" "
+ "title=\"annotation in typeannos\">@FldD</a> java.lang.String <a href=\"FldC.html\" "
+ "title=\"annotation in typeannos\">@FldC</a> <a href=\"FldB.html\" "
+ "title=\"annotation in typeannos\">@FldB</a> [] <a href=\"FldC.html\" "
+ "title=\"annotation in typeannos\">@FldC</a> <a href=\"FldA.html\" "
+ "title=\"annotation in typeannos\">@FldA</a> []</span>&nbsp;"
+ "<span class=\"memberName\">array2Deep</span></div>");
checkOutput("typeannos/ModifiedScoped.html", true,
"<pre>public final&nbsp;<a href=\"Parameterized.html\" "
+ "title=\"class in typeannos\">Parameterized</a>&lt;<a href=\""
+ "FldA.html\" title=\"annotation in typeannos\">@FldA</a> "
+ "<a href=\"Parameterized.html\" title=\"class in "
+ "typeannos\">Parameterized</a>&lt;<a href=\"FldA.html\" "
+ "title=\"annotation in typeannos\">@FldA</a> java.lang.String,&#8203;<a "
+ "href=\"FldB.html\" title=\"annotation in typeannos\">"
+ "@FldB</a> java.lang.String&gt;,&#8203;<a href=\"FldB.html\" "
+ "title=\"annotation in typeannos\">@FldB</a> java.lang.String&gt; "
+ "nestedParameterized</pre>",
"<div class=\"memberSignature\"><span class=\"modifiers\">public final</span>"
+ "&nbsp;<span class=\"returnType\"><a href=\"Parameterized.html\" "
+ "title=\"class in typeannos\">Parameterized</a>&lt;<a href=\"FldA.html\" "
+ "title=\"annotation in typeannos\">@FldA</a> <a href=\"Parameterized.html\" "
+ "title=\"class in typeannos\">Parameterized</a>&lt;<a href=\"FldA.html\" "
+ "title=\"annotation in typeannos\">@FldA</a> java.lang.String,&#8203;"
+ "<a href=\"FldB.html\" title=\"annotation in typeannos\">@FldB</a> "
+ "java.lang.String&gt;,&#8203;<a href=\"FldB.html\" "
+ "title=\"annotation in typeannos\">@FldB</a> java.lang.String&gt;"
+ "</span>&nbsp;<span class=\"memberName\">nestedParameterized</span></div>",
"<pre>public final&nbsp;<a href=\"FldA.html\" "
+ "title=\"annotation in typeannos\">@FldA</a> java.lang.String[][] "
+ "array2</pre>");
"<div class=\"memberSignature\"><span class=\"modifiers\">public final</span>&nbsp;"
+ "<span class=\"returnType\"><a href=\"FldA.html\" title=\"annotation in typeannos\">"
+ "@FldA</a> java.lang.String[][]</span>&nbsp;"
+ "<span class=\"memberName\">array2</span></div>");
// Test for type annotations on method return types (MethodReturnType.java).
checkOutput("typeannos/MtdDefaultScope.html", true,
"<pre class=\"methodSignature\">public&nbsp;&lt;T&gt;&nbsp;<a href=\"MRtnA.html\" "
+ "title=\"annotation in typeannos\">@MRtnA</a> java.lang.String"
+ "&nbsp;method()</pre>",
"<div class=\"memberSignature\"><span class=\"modifiers\">public</span>"
+ "&nbsp;<span class=\"typeParameters\">&lt;T&gt;</span>&nbsp;<span "
+ "class=\"returnType\"><a href=\"MRtnA.html\" title=\"annotation in typeannos\">"
+ "@MRtnA</a> java.lang.String</span>&nbsp;"
+ "<span class=\"memberName\">method</span>()</div>",
// When JDK-8068737 is fixed, we should change the order
"<pre class=\"methodSignature\"><a href=\"MRtnA.html\" title=\"annotation in typeannos\">"
+ "@MRtnA</a> java.lang.String "
+ "<a href=\"MRtnB.html\" title=\"annotation in typeannos\">@MRtnB</a> [] "
+ "<a href=\"MRtnA.html\" title=\"annotation in typeannos\">@MRtnA</a> []"
+ "&nbsp;array2Deep()</pre>",
"<div class=\"memberSignature\"><span class=\"returnType\"><a href=\"MRtnA.html\" "
+ "title=\"annotation in typeannos\">@MRtnA</a> java.lang.String <a href=\"MRtnB.html\" "
+ "title=\"annotation in typeannos\">@MRtnB</a> [] <a href=\"MRtnA.html\" "
+ "title=\"annotation in typeannos\">@MRtnA</a> []</span>&nbsp;<span class=\"memberName\">"
+ "array2Deep</span>()</div>",
"<pre class=\"methodSignature\"><a href=\"MRtnA.html\" title=\"annotation in "
+ "typeannos\">@MRtnA</a> java.lang.String[][]&nbsp;array2()</pre>");
"<div class=\"memberSignature\"><span class=\"returnType\"><a href=\"MRtnA.html\" "
+ "title=\"annotation in typeannos\">@MRtnA</a> java.lang.String[][]</span>&nbsp;"
+ "<span class=\"memberName\">array2</span>()</div>");
checkOutput("typeannos/MtdModifiedScoped.html", true,
"<pre class=\"methodSignature\">public final&nbsp;<a href=\"MtdParameterized.html\" "
+ "title=\"class in typeannos\">MtdParameterized</a>&lt;<a href=\""
+ "MRtnA.html\" title=\"annotation in typeannos\">@MRtnA</a> "
+ "<a href=\"MtdParameterized.html\" title=\"class in "
+ "typeannos\">MtdParameterized</a>&lt;<a href=\"MRtnA."
+ "html\" title=\"annotation in typeannos\">@MRtnA</a> java.lang."
+ "String,&#8203;<a href=\"MRtnB.html\" title=\"annotation in "
+ "typeannos\">@MRtnB</a> java.lang.String&gt;,&#8203;<a href=\""
+ "MRtnB.html\" title=\"annotation in typeannos\">@MRtnB</a> java."
+ "lang.String&gt;&nbsp;nestedMtdParameterized()</pre>");
"<div class=\"memberSignature\"><span class=\"modifiers\">public final</span>&nbsp;"
+ "<span class=\"returnType\"><a href=\"MtdParameterized.html\" "
+ "title=\"class in typeannos\">MtdParameterized</a>&lt;<a href=\"MRtnA.html\" "
+ "title=\"annotation in typeannos\">@MRtnA</a> <a href=\"MtdParameterized.html\" "
+ "title=\"class in typeannos\">MtdParameterized</a>&lt;<a href=\"MRtnA.html\" "
+ "title=\"annotation in typeannos\">@MRtnA</a> java.lang.String,&#8203;"
+ "<a href=\"MRtnB.html\" title=\"annotation in typeannos\">@MRtnB</a> "
+ "java.lang.String&gt;,&#8203;<a href=\"MRtnB.html\" title=\"annotation in typeannos\">"
+ "@MRtnB</a> java.lang.String&gt;</span>&nbsp;<span class=\"memberName\">"
+ "nestedMtdParameterized</span>()</div>");
// Test for type annotations on method type parameters (MethodTypeParameters.java).
checkOutput("typeannos/UnscopedUnmodified.html", true,
"<pre class=\"methodSignature\">&lt;K extends <a href=\"MTyParamA.html\" title=\""
+ "annotation in typeannos\">@MTyParamA</a> java.lang.String&gt;"
+ "&nbsp;void&nbsp;methodExtends()</pre>",
"<div class=\"memberSignature\"><span class=\"typeParameters\">&lt;K extends "
+ "<a href=\"MTyParamA.html\" title=\"annotation in typeannos\">@MTyParamA</a> "
+ "java.lang.String&gt;</span>&nbsp;<span class=\"returnType\">void</span>&nbsp;"
+ "<span class=\"memberName\">methodExtends</span>()</div>",
"<pre class=\"methodSignature\">&lt;K extends <a href=\"MTyParamA.html\" title=\""
+ "annotation in typeannos\">@MTyParamA</a> <a href=\""
+ "MtdTyParameterized.html\" title=\"class in typeannos\">"
+ "MtdTyParameterized</a>&lt;<a href=\"MTyParamB.html\" "
+ "title=\"annotation in typeannos\">@MTyParamB</a> java.lang.String"
+ "&gt;&gt;&nbsp;void&nbsp;nestedExtends()</pre>");
"<div class=\"memberSignature\"><span class=\"typeParametersLong\">&lt;K extends "
+ "<a href=\"MTyParamA.html\" title=\"annotation in typeannos\">@MTyParamA</a> "
+ "<a href=\"MtdTyParameterized.html\" title=\"class in typeannos\">MtdTyParameterized</a>"
+ "&lt;<a href=\"MTyParamB.html\" title=\"annotation in typeannos\">@MTyParamB</a> "
+ "java.lang.String&gt;&gt;</span>\n<span class=\"returnType\">void</span>"
+ "&nbsp;<span class=\"memberName\">nestedExtends</span>()</div>");
checkOutput("typeannos/PublicModifiedMethods.html", true,
"<pre class=\"methodSignature\">public final&nbsp;&lt;K extends <a href=\""
+ "MTyParamA.html\" title=\"annotation in typeannos\">@MTyParamA</a> "
+ "java.lang.String&gt;&nbsp;void&nbsp;methodExtends()</pre>",
"<div class=\"memberSignature\"><span class=\"modifiers\">public final</span>&nbsp;"
+ "<span class=\"typeParameters\">&lt;K extends <a href=\"MTyParamA.html\" "
+ "title=\"annotation in typeannos\">@MTyParamA</a> java.lang.String&gt;</span>\n"
+ "<span class=\"returnType\">void</span>&nbsp;"
+ "<span class=\"memberName\">methodExtends</span>()</div>",
"<pre class=\"methodSignature\">public final&nbsp;&lt;K extends <a href=\""
+ "MTyParamA.html\" title=\"annotation in typeannos\">@MTyParamA</a> "
+ "java.lang.String,&#8203;V extends <a href=\"MTyParamA.html\" "
+ "title=\"annotation in typeannos\">@MTyParamA</a> <a href=\""
+ "MtdTyParameterized.html\" title=\"class in typeannos\">"
+ "MtdTyParameterized</a>&lt;<a href=\"MTyParamB.html\" "
+ "title=\"annotation in typeannos\">@MTyParamB</a> java.lang.String"
+ "&gt;&gt;&nbsp;void&nbsp;dual()</pre>");
"<div class=\"memberSignature\"><span class=\"modifiers\">public final</span>"
+ "&nbsp;<span class=\"typeParametersLong\">&lt;K extends <a href=\"MTyParamA.html\" "
+ "title=\"annotation in typeannos\">@MTyParamA</a> java.lang.String,&#8203;\n"
+ "V extends <a href=\"MTyParamA.html\" title=\"annotation in typeannos\">"
+ "@MTyParamA</a> <a href=\"MtdTyParameterized.html\" title=\"class in typeannos\">"
+ "MtdTyParameterized</a>&lt;<a href=\"MTyParamB.html\" title=\"annotation in typeannos\">"
+ "@MTyParamB</a> java.lang.String&gt;&gt;</span>\n<span class=\"returnType\">void</span>"
+ "&nbsp;<span class=\"memberName\">dual</span>()</div>");
// Test for type annotations on parameters (Parameters.java).
checkOutput("typeannos/Parameters.html", true,
"<pre class=\"methodSignature\">void&nbsp;unannotated&#8203;(<a href=\""
+ "ParaParameterized.html\" title=\"class in typeannos\">"
+ "ParaParameterized</a>&lt;java.lang.String,&#8203;java.lang.String&gt;"
+ "&nbsp;a)</pre>",
"<div class=\"memberSignature\"><span class=\"returnType\">void</span>&nbsp;"
+ "<span class=\"memberName\">unannotated</span>&#8203;(<span class=\"arguments\">"
+ "<a href=\"ParaParameterized.html\" title=\"class in typeannos\">ParaParameterized</a>"
+ "&lt;java.lang.String,&#8203;java.lang.String&gt;&nbsp;a)</span></div>",
"<pre class=\"methodSignature\">void&nbsp;nestedParaParameterized&#8203;(<a href=\""
+ "ParaParameterized.html\" title=\"class in typeannos\">"
+ "ParaParameterized</a>&lt;<a href=\"ParamA.html\" "
+ "title=\"annotation in typeannos\">@ParamA</a> <a href=\""
+ "ParaParameterized.html\" title=\"class in typeannos\">"
+ "ParaParameterized</a>&lt;<a href=\"ParamA.html\" "
"<div class=\"memberSignature\"><span class=\"returnType\">void</span>&nbsp;"
+ "<span class=\"memberName\">nestedParaParameterized</span>&#8203;"
+ "(<span class=\"arguments\"><a href=\"ParaParameterized.html\" "
+ "title=\"class in typeannos\">ParaParameterized</a>&lt;<a href=\"ParamA.html\" "
+ "title=\"annotation in typeannos\">@ParamA</a> <a href=\"ParaParameterized.html\" "
+ "title=\"class in typeannos\">ParaParameterized</a>&lt;<a href=\"ParamA.html\" "
+ "title=\"annotation in typeannos\">@ParamA</a> java.lang.String,&#8203;"
+ "<a href=\"ParamB.html\" title=\"annotation in "
+ "typeannos\">@ParamB</a> java.lang.String&gt;,&#8203;<a href=\""
+ "ParamB.html\" title=\"annotation in typeannos\">@ParamB"
+ "</a> java.lang.String&gt;&nbsp;a)</pre>",
+ "<a href=\"ParamB.html\" title=\"annotation in typeannos\">@ParamB</a> "
+ "java.lang.String&gt;,&#8203;<a href=\"ParamB.html\" title=\"annotation in typeannos\">"
+ "@ParamB</a> java.lang.String&gt;&nbsp;a)</span></div>",
// When JDK-8068737 is fixed, we should change the order
"<pre class=\"methodSignature\">void&nbsp;array2Deep&#8203;(<a href=\"ParamA.html\" "
+ "title=\"annotation in typeannos\">@ParamA</a> java.lang.String "
+ "<a href=\"ParamB.html\" title=\"annotation in typeannos\">"
+ "@ParamB</a> [] "
+ "<a href=\"ParamA.html\" title=\"annotation in typeannos\">"
+ "@ParamA</a> []"
+ "&nbsp;a)</pre>");
"<div class=\"memberSignature\"><span class=\"returnType\">void</span>&nbsp;"
+ "<span class=\"memberName\">array2Deep</span>&#8203;(<span class=\"arguments\">"
+ "<a href=\"ParamA.html\" title=\"annotation in typeannos\">@ParamA</a> "
+ "java.lang.String <a href=\"ParamB.html\" title=\"annotation in typeannos\">"
+ "@ParamB</a> [] <a href=\"ParamA.html\" title=\"annotation in typeannos\">"
+ "@ParamA</a> []&nbsp;a)</span></div>");
// Test for type annotations on throws (Throws.java).
checkOutput("typeannos/ThrDefaultUnmodified.html", true,
"<pre class=\"methodSignature\">void&nbsp;oneException()\n"
+ " throws <a href=\"ThrA.html\" title=\""
+ "annotation in typeannos\">@ThrA</a> java.lang.Exception</pre>",
"<div class=\"memberSignature\"><span class=\"returnType\">void</span>&nbsp;"
+ "<span class=\"memberName\">oneException</span>()\n"
+ " throws <span class=\"exceptions\"><a href=\"ThrA.html\" "
+ "title=\"annotation in typeannos\">@ThrA</a> java.lang.Exception</span></div>",
"<pre class=\"methodSignature\">void&nbsp;twoExceptions()\n"
+ " throws <a href=\"ThrA.html\" title=\""
+ "annotation in typeannos\">@ThrA</a> java.lang.RuntimeException,\n"
+ " <a href=\"ThrA.html\" title=\""
+ "annotation in typeannos\">@ThrA</a> java.lang.Exception</pre>");
"<div class=\"memberSignature\"><span class=\"returnType\">void</span>&nbsp;"
+ "<span class=\"memberName\">twoExceptions</span>()\n"
+ " throws <span class=\"exceptions\"><a href=\"ThrA.html\" "
+ "title=\"annotation in typeannos\">@ThrA</a> java.lang.RuntimeException,\n"
+ "<a href=\"ThrA.html\" title=\"annotation in typeannos\">@ThrA</a> "
+ "java.lang.Exception</span></div>");
checkOutput("typeannos/ThrPublicModified.html", true,
"<pre class=\"methodSignature\">public final&nbsp;void&nbsp;oneException&#8203;"
+ "(java.lang.String&nbsp;a)\n throws <a href=\"ThrA.html\" "
+ "title=\"annotation in typeannos\">@ThrA</a> java.lang.Exception</pre>",
"<div class=\"memberSignature\"><span class=\"modifiers\">public final</span>&nbsp;"
+ "<span class=\"returnType\">void</span>&nbsp;<span class=\"memberName\">"
+ "oneException</span>&#8203;(<span class=\"arguments\">java.lang.String&nbsp;a)</span>\n"
+ " throws <span class=\"exceptions\"><a href=\"ThrA.html\" "
+ "title=\"annotation in typeannos\">@ThrA</a> java.lang.Exception</span></div>",
"<pre class=\"methodSignature\">public final&nbsp;void&nbsp;twoExceptions&#8203;"
+ "(java.lang.String&nbsp;a)\n throws <a href=\"ThrA.html\" "
"<div class=\"memberSignature\"><span class=\"modifiers\">public final</span>&nbsp;"
+ "<span class=\"returnType\">void</span>&nbsp;<span class=\"memberName\">"
+ "twoExceptions</span>&#8203;(<span class=\"arguments\">java.lang.String&nbsp;a)</span>\n"
+ " throws <span class=\"exceptions\"><a href=\"ThrA.html\" "
+ "title=\"annotation in typeannos\">@ThrA</a> java.lang.RuntimeException,\n"
+ " <a href=\"ThrA.html\" "
+ "title=\"annotation in typeannos\">@ThrA</a> java.lang.Exception</pre>");
+ "<a href=\"ThrA.html\" title=\"annotation in typeannos\">@ThrA</a> "
+ "java.lang.Exception</span></div>");
checkOutput("typeannos/ThrWithValue.html", true,
"<pre class=\"methodSignature\">void&nbsp;oneException()\n"
+ " throws <a href=\"ThrB.html\" title=\""
+ "annotation in typeannos\">@ThrB</a>("
+ "\"m\") java.lang.Exception</pre>",
"<div class=\"memberSignature\"><span class=\"returnType\">void</span>&nbsp;"
+ "<span class=\"memberName\">oneException</span>()\n"
+ " throws <span class=\"exceptions\"><a href=\"ThrB.html\" "
+ "title=\"annotation in typeannos\">@ThrB</a>(\"m\") java.lang.Exception</span></div>",
"<pre class=\"methodSignature\">void&nbsp;twoExceptions()\n"
+ " throws <a href=\"ThrB.html\" title=\""
+ "annotation in typeannos\">@ThrB</a>("
+ "\"m\") java.lang.RuntimeException,\n"
+ " <a href=\"ThrA.html\" title=\""
+ "annotation in typeannos\">@ThrA</a> java.lang.Exception</pre>");
"<div class=\"memberSignature\"><span class=\"returnType\">void</span>&nbsp;"
+ "<span class=\"memberName\">twoExceptions</span>()\n"
+ " throws <span class=\"exceptions\"><a href=\"ThrB.html\" "
+ "title=\"annotation in typeannos\">@ThrB</a>(\"m\") java.lang.RuntimeException,\n"
+ "<a href=\"ThrA.html\" title=\"annotation in typeannos\">@ThrA</a> "
+ "java.lang.Exception</span></div>");
// Test for type annotations on type parameters (TypeParameters.java).
checkOutput("typeannos/TestMethods.html", true,
"<pre class=\"methodSignature\">&lt;K,&#8203;<a href=\"TyParaA.html\" title="
+ "\"annotation in typeannos\">@TyParaA</a> V extends <a href=\"TyParaA.html\" "
+ "title=\"annotation in typeannos\">@TyParaA</a> "
+ "java.lang.String&gt;&nbsp;void&nbsp;secondAnnotated()</pre>"
"<div class=\"memberSignature\"><span class=\"typeParameters\">&lt;K,&#8203;\n"
+ "<a href=\"TyParaA.html\" title=\"annotation in typeannos\">@TyParaA</a> V extends "
+ "<a href=\"TyParaA.html\" title=\"annotation in typeannos\">@TyParaA</a> "
+ "java.lang.String&gt;</span>\n<span class=\"returnType\">void</span>&nbsp;"
+ "<span class=\"memberName\">secondAnnotated</span>()</div>"
);
// Test for type annotations on wildcard type (Wildcards.java).
checkOutput("typeannos/BoundTest.html", true,
"<pre class=\"methodSignature\">void&nbsp;wcExtends&#8203;(<a href=\"MyList.html\" "
+ "title=\"class in typeannos\">MyList</a>&lt;? extends <a href=\""
+ "WldA.html\" title=\"annotation in typeannos\">@WldA"
+ "</a> java.lang.String&gt;&nbsp;l)</pre>",
"<div class=\"memberSignature\"><span class=\"returnType\">void</span>&nbsp;"
+ "<span class=\"memberName\">wcExtends</span>&#8203;(<span class=\"arguments\">"
+ "<a href=\"MyList.html\" title=\"class in typeannos\">MyList</a>&lt;? extends "
+ "<a href=\"WldA.html\" title=\"annotation in typeannos\">@WldA</a> "
+ "java.lang.String&gt;&nbsp;l)</span></div>",
"<pre class=\"methodSignature\"><a href=\"MyList.html\" title=\"class in "
+ "typeannos\">MyList</a>&lt;? super <a href=\"WldA.html\" "
+ "title=\"annotation in typeannos\">@WldA</a> java.lang.String&gt;"
+ "&nbsp;returnWcSuper()</pre>");
"<div class=\"memberSignature\"><span class=\"returnType\"><a href=\"MyList.html\" "
+ "title=\"class in typeannos\">MyList</a>&lt;? super <a href=\"WldA.html\" "
+ "title=\"annotation in typeannos\">@WldA</a> java.lang.String&gt;</span>&nbsp;"
+ "<span class=\"memberName\">returnWcSuper</span>()</div>");
checkOutput("typeannos/BoundWithValue.html", true,
"<pre class=\"methodSignature\">void&nbsp;wcSuper&#8203;(<a href=\"MyList.html\""
+ " title=\"class in typeannos\">MyList</a>&lt;? super <a href=\""
+ "WldB.html\" title=\"annotation in typeannos\">@WldB</a>("
+ "\"m\") java.lang."
+ "String&gt;&nbsp;l)</pre>",
"<div class=\"memberSignature\"><span class=\"returnType\">void</span>&nbsp;"
+ "<span class=\"memberName\">wcSuper</span>&#8203;(<span class=\"arguments\">"
+ "<a href=\"MyList.html\" title=\"class in typeannos\">MyList</a>&lt;? super "
+ "<a href=\"WldB.html\" title=\"annotation in typeannos\">@WldB</a>(\"m\") "
+ "java.lang.String&gt;&nbsp;l)</span></div>",
"<pre class=\"methodSignature\"><a href=\"MyList.html\" title=\"class in "
+ "typeannos\">MyList</a>&lt;? extends <a href=\"WldB."
+ "html\" title=\"annotation in typeannos\">@WldB</a>("
+ "\"m\") java.lang.String"
+ "&gt;&nbsp;returnWcExtends()</pre>");
"<div class=\"memberSignature\"><span class=\"returnType\"><a href=\"MyList.html\" "
+ "title=\"class in typeannos\">MyList</a>&lt;? extends <a href=\"WldB.html\" "
+ "title=\"annotation in typeannos\">@WldB</a>(\"m\") java.lang.String&gt;</span>"
+ "&nbsp;<span class=\"memberName\">returnWcExtends</span>()</div>");
// Test for receiver annotations (Receivers.java).
checkOutput("typeannos/DefaultUnmodified.html", true,
"<pre class=\"methodSignature\">void&nbsp;withException&#8203;(<a href=\"RcvrA.html\" "
+ "title=\"annotation in typeannos\">@RcvrA</a>&nbsp;"
+ "DefaultUnmodified&nbsp;this)\n"
+ " throws java."
+ "lang.Exception</pre>",
"<div class=\"memberSignature\"><span class=\"returnType\">void</span>&nbsp;"
+ "<span class=\"memberName\">withException</span>&#8203;(<span class=\"arguments\">"
+ "<a href=\"RcvrA.html\" title=\"annotation in typeannos\">@RcvrA</a>"
+ "&nbsp;DefaultUnmodified&nbsp;this)</span>\n"
+ " throws <span class=\"exceptions\">java.lang.Exception</span></div>",
"<pre class=\"methodSignature\">java.lang.String&nbsp;nonVoid&#8203;(<a href=\"RcvrA."
+ "html\" title=\"annotation in typeannos\">@RcvrA</a> <a href=\""
+ "RcvrB.html\" title=\"annotation in typeannos\">@RcvrB"
+ "</a>(\"m\")"
+ "&nbsp;DefaultUnmodified&nbsp;this)</pre>",
"<div class=\"memberSignature\"><span class=\"returnType\">java.lang.String</span>&nbsp;"
+ "<span class=\"memberName\">nonVoid</span>&#8203;(<span class=\"arguments\">"
+ "<a href=\"RcvrA.html\" title=\"annotation in typeannos\">@RcvrA</a> "
+ "<a href=\"RcvrB.html\" title=\"annotation in typeannos\">@RcvrB</a>(\"m\")"
+ "&nbsp;DefaultUnmodified&nbsp;this)</span></div>",
"<pre class=\"methodSignature\">&lt;T extends java.lang.Runnable&gt;&nbsp;void&nbsp;accept&#8203;("
+ "<a href=\"RcvrA.html\" title=\"annotation in "
+ "typeannos\">@RcvrA</a>&nbsp;DefaultUnmodified&nbsp;this,\n"
+ " T&nbsp;r)\n"
+ " throws java.lang.Exception</pre>");
"<div class=\"memberSignature\"><span class=\"typeParameters\">&lt;T extends "
+ "java.lang.Runnable&gt;</span>&nbsp;<span class=\"returnType\">void</span>&nbsp;"
+ "<span class=\"memberName\">accept</span>&#8203;(<span class=\"arguments\">"
+ "<a href=\"RcvrA.html\" title=\"annotation in typeannos\">@RcvrA</a>&nbsp;"
+ "DefaultUnmodified&nbsp;this,\nT&nbsp;r)</span>\n"
+ " throws <span class=\"exceptions\">"
+ "java.lang.Exception</span></div>");
checkOutput("typeannos/PublicModified.html", true,
"<pre class=\"methodSignature\">public final&nbsp;java.lang.String&nbsp;nonVoid&#8203;"
+ "(<a href=\"RcvrA.html\" title=\"annotation in typeannos\">"
+ "@RcvrA</a>&nbsp;PublicModified&nbsp;this)</pre>",
"<div class=\"memberSignature\"><span class=\"modifiers\">public final</span>&nbsp;"
+ "<span class=\"returnType\">java.lang.String</span>&nbsp;<span class=\"memberName\">"
+ "nonVoid</span>&#8203;(<span class=\"arguments\"><a href=\"RcvrA.html\" "
+ "title=\"annotation in typeannos\">@RcvrA</a>&nbsp;PublicModified&nbsp;this)"
+ "</span></div>",
"<pre class=\"methodSignature\">public final&nbsp;&lt;T extends java.lang.Runnable&gt;&nbsp;"
+ "void&nbsp;accept&#8203;(<a href=\"RcvrA.html\" title=\""
+ "annotation in typeannos\">@RcvrA</a>&nbsp;PublicModified&nbsp;this,\n"
+ " T&nbsp;r)\n"
+ " throws java.lang.Exception</pre>");
"<div class=\"memberSignature\"><span class=\"modifiers\">public final</span>&nbsp;"
+ "<span class=\"typeParameters\">&lt;T extends java.lang.Runnable&gt;</span>&nbsp;"
+ "<span class=\"returnType\">void</span>&nbsp;<span class=\"memberName\">accept"
+ "</span>&#8203;(<span class=\"arguments\"><a href=\"RcvrA.html\" "
+ "title=\"annotation in typeannos\">@RcvrA</a>&nbsp;PublicModified&nbsp;this,\n"
+ "T&nbsp;r)</span>\n throws "
+ "<span class=\"exceptions\">java.lang.Exception</span></div>");
checkOutput("typeannos/WithValue.html", true,
"<pre class=\"methodSignature\">&lt;T extends java.lang.Runnable&gt;&nbsp;void&nbsp;accept&#8203;("
+ "<a href=\"RcvrB.html\" title=\"annotation in "
+ "typeannos\">@RcvrB</a>("
+ "\"m\")&nbsp;WithValue&nbsp;this,\n"
+ " T&nbsp;r)\n"
+ " throws java.lang.Exception</pre>");
"<div class=\"memberSignature\"><span class=\"typeParameters\">&lt;T extends "
+ "java.lang.Runnable&gt;</span>&nbsp;<span class=\"returnType\">void</span>&nbsp;"
+ "<span class=\"memberName\">accept</span>&#8203;(<span class=\"arguments\">"
+ "<a href=\"RcvrB.html\" title=\"annotation in typeannos\">@RcvrB</a>(\"m\")"
+ "&nbsp;WithValue&nbsp;this,\nT&nbsp;r)</span>\n"
+ " throws <span class=\"exceptions\">"
+ "java.lang.Exception</span></div>");
checkOutput("typeannos/WithFinal.html", true,
"<pre class=\"methodSignature\">java.lang.String&nbsp;nonVoid&#8203;(<a href=\"RcvrB.html\" "
+ "title=\"annotation in typeannos\">@RcvrB</a>(\"m\") "
+ "<a href=\"WithFinal.html\" title=\"class in typeannos\">"
+ "WithFinal</a>&nbsp;afield)</pre>");
"<div class=\"memberSignature\"><span class=\"returnType\">java.lang.String</span>"
+ "&nbsp;<span class=\"memberName\">nonVoid</span>&#8203;(<span class=\"arguments\">"
+ "<a href=\"RcvrB.html\" title=\"annotation in typeannos\">@RcvrB</a>(\"m\") "
+ "<a href=\"WithFinal.html\" title=\"class in typeannos\">WithFinal</a>"
+ "&nbsp;afield)</span></div>");
checkOutput("typeannos/WithBody.html", true,
"<pre class=\"methodSignature\">void&nbsp;field&#8203;(<a href=\"RcvrA.html\" title=\""
+ "annotation in typeannos\">@RcvrA</a>&nbsp;WithBody&nbsp;this)</pre>");
"<div class=\"memberSignature\"><span class=\"returnType\">void</span>&nbsp;"
+ "<span class=\"memberName\">field</span>&#8203;(<span class=\"arguments\">"
+ "<a href=\"RcvrA.html\" title=\"annotation in typeannos\">@RcvrA</a>"
+ "&nbsp;WithBody&nbsp;this)</span></div>");
checkOutput("typeannos/Generic2.html", true,
"<pre class=\"methodSignature\">void&nbsp;test2&#8203;(<a href=\"RcvrA.html\" title=\""
+ "annotation in typeannos\">@RcvrA</a>&nbsp;Generic2&lt;X&gt;&nbsp;this)</pre>");
"<div class=\"memberSignature\"><span class=\"returnType\">void</span>&nbsp;"
+ "<span class=\"memberName\">test2</span>&#8203;(<span class=\"arguments\">"
+ "<a href=\"RcvrA.html\" title=\"annotation in typeannos\">@RcvrA</a>"
+ "&nbsp;Generic2&lt;X&gt;&nbsp;this)</span></div>");
// Test for repeated type annotations (RepeatedAnnotations.java).
@ -393,84 +418,82 @@ public class TestTypeAnnotations extends JavadocTester {
// + "extends java.lang.Object</pre>");
checkOutput("typeannos/RepeatingOnConstructor.html", true,
"<pre><a href=\"RepConstructorA.html\" title=\"annotation "
+ "in typeannos\">@RepConstructorA</a> <a href=\"RepConstructorA.html"
+ "\" title=\"annotation in typeannos\">@RepConstructorA</a>\n<a href="
+ "\"RepConstructorB.html\" title=\"annotation in typeannos"
+ "\">@RepConstructorB</a> <a href=\"RepConstructorB.html"
+ "\" title=\"annotation in typeannos\">@RepConstructorB</a>\n"
+ "RepeatingOnConstructor()</pre>",
"<div class=\"memberSignature\"><span class=\"annotations\">"
+ "<a href=\"RepConstructorA.html\" title=\"annotation in typeannos\">"
+ "@RepConstructorA</a> <a href=\"RepConstructorA.html\" "
+ "title=\"annotation in typeannos\">@RepConstructorA</a>\n"
+ "<a href=\"RepConstructorB.html\" title=\"annotation in typeannos\">"
+ "@RepConstructorB</a> <a href=\"RepConstructorB.html\" "
+ "title=\"annotation in typeannos\">@RepConstructorB</a>\n"
+ "</span><span class=\"memberName\">RepeatingOnConstructor</span>()</div>",
"<pre><a href=\"RepConstructorA.html\" title=\"annotation in typeannos"
+ "\">@RepConstructorA</a> <a href=\"RepConstructorA.html"
+ "\" title=\"annotation in typeannos\">@RepConstructorA</a>\n<a href="
+ "\"RepConstructorB.html\" title=\"annotation in typeannos"
+ "\">@RepConstructorB</a> <a href=\"RepConstructorB.html"
+ "\" title=\"annotation in typeannos\">@RepConstructorB</a>\n"
+ "RepeatingOnConstructor&#8203;(int&nbsp;i,\n int&nbsp;j)</pre>",
"<div class=\"memberSignature\"><span class=\"annotations\">"
+ "<a href=\"RepConstructorA.html\" title=\"annotation in typeannos\">"
+ "@RepConstructorA</a> <a href=\"RepConstructorA.html\" "
+ "title=\"annotation in typeannos\">@RepConstructorA</a>\n"
+ "<a href=\"RepConstructorB.html\" title=\"annotation in typeannos\">"
+ "@RepConstructorB</a> <a href=\"RepConstructorB.html\" "
+ "title=\"annotation in typeannos\">@RepConstructorB</a>\n"
+ "</span><span class=\"memberName\">RepeatingOnConstructor</span>"
+ "&#8203;(<span class=\"arguments\">int&nbsp;i,\n"
+ "int&nbsp;j)</span></div>",
"<pre><a href=\"RepAllContextsA.html\" title=\"annotation in typeannos"
+ "\">@RepAllContextsA</a> <a href=\"RepAllContextsA.html"
+ "\" title=\"annotation in typeannos\">@RepAllContextsA</a>\n"
+ "<a href=\"RepAllContextsB.html\" title=\"annotation in typeannos"
+ "\">@RepAllContextsB</a> <a href=\"RepAllContextsB.html"
+ "\" title=\"annotation in typeannos\">@RepAllContextsB</a>\n"
+ "RepeatingOnConstructor&#8203;(int&nbsp;i,\n int&nbsp;j,\n"
+ " int&nbsp;k)</pre>",
"<div class=\"memberSignature\"><span class=\"annotations\">"
+ "<a href=\"RepAllContextsA.html\" title=\"annotation in typeannos\">"
+ "@RepAllContextsA</a> <a href=\"RepAllContextsA.html\" "
+ "title=\"annotation in typeannos\">@RepAllContextsA</a>\n"
+ "<a href=\"RepAllContextsB.html\" title=\"annotation in typeannos\">"
+ "@RepAllContextsB</a> <a href=\"RepAllContextsB.html\" "
+ "title=\"annotation in typeannos\">@RepAllContextsB</a>\n"
+ "</span><span class=\"memberName\">RepeatingOnConstructor</span>"
+ "&#8203;(<span class=\"arguments\">int&nbsp;i,\n"
+ "int&nbsp;j,\nint&nbsp;k)</span></div>",
"<pre>RepeatingOnConstructor&#8203;(<a href=\"RepParameterA.html"
+ "\" title=\"annotation in typeannos\">@RepParameterA</a> <a href="
+ "\"RepParameterA.html\" title=\"annotation in typeannos"
+ "\">@RepParameterA</a> <a href=\"RepParameterB.html"
+ "\" title=\"annotation in typeannos\">@RepParameterB</a> "
+ "<a href=\"RepParameterB.html\" title=\"annotation in typeannos"
+ "\">@RepParameterB</a>\n java.lang.String&nbsp;parameter,\n"
+ " <a href=\"RepParameterA.html\" "
+ "title=\"annotation in typeannos\">@RepParameterA</a> <a href="
+ "\"RepParameterA.html\" title=\"annotation in typeannos\">"
+ "@RepParameterA</a> <a href=\"RepParameterB.html\" "
+ "title=\"annotation in typeannos\">@RepParameterB</a> <a href="
+ "\"RepParameterB.html\" title=\"annotation in typeannos\">"
+ "@RepParameterB</a>\n java.lang.String "
+ "<a href=\"RepTypeUseA.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseA</a> <a href=\"RepTypeUseA.html\" "
+ "title=\"annotation in typeannos\">@RepTypeUseA</a> <a href="
+ "\"RepTypeUseB.html\" title=\"annotation in typeannos\">@RepTypeUseB</a> "
+ "<a href=\"RepTypeUseB.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseB</a> ...&nbsp;vararg)</pre>"
"<div class=\"memberSignature\"><span class=\"memberName\">RepeatingOnConstructor</span>"
+ "&#8203;(<span class=\"arguments\"><a href=\"RepParameterA.html\" "
+ "title=\"annotation in typeannos\">@RepParameterA</a> "
+ "<a href=\"RepParameterA.html\" title=\"annotation in typeannos\">@RepParameterA</a> "
+ "<a href=\"RepParameterB.html\" title=\"annotation in typeannos\">@RepParameterB</a> "
+ "<a href=\"RepParameterB.html\" title=\"annotation in typeannos\">@RepParameterB</a>\n"
+ "java.lang.String&nbsp;parameter,\n<a href=\"RepParameterA.html\" "
+ "title=\"annotation in typeannos\">@RepParameterA</a> "
+ "<a href=\"RepParameterA.html\" title=\"annotation in typeannos\">@RepParameterA</a> "
+ "<a href=\"RepParameterB.html\" title=\"annotation in typeannos\">@RepParameterB</a> "
+ "<a href=\"RepParameterB.html\" title=\"annotation in typeannos\">@RepParameterB</a>\n"
+ "java.lang.String <a href=\"RepTypeUseA.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseA</a> <a href=\"RepTypeUseA.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseA</a> <a href=\"RepTypeUseB.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseB</a> <a href=\"RepTypeUseB.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseB</a> ...&nbsp;vararg)</span></div>"
);
checkOutput("typeannos/RepeatingOnConstructor.Inner.html", true,
"<code><span class=\"memberNameLink\"><a href=\"#%3Cinit%3E(java.lang.String,"
+ "java.lang.String...)\">Inner</a></span>&#8203;(java.lang.String&nbsp;parameter,\n"
+ " java.lang.String <a href=\"RepTypeUseA.html\" title=\"annotation in typeannos\">"
+ "java.lang.String <a href=\"RepTypeUseA.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseA</a> <a href=\"RepTypeUseA.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseA</a> <a href=\"RepTypeUseB.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseB</a> <a href=\"RepTypeUseB.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseB</a> ...&nbsp;vararg)</code>",
"Inner&#8203;(<a href=\"RepTypeUseA.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseA</a> <a href=\"RepTypeUseA.html\" title="
+ "\"annotation in typeannos\">@RepTypeUseA</a> <a href=\"RepTypeUseB.html"
+ "\" title=\"annotation in typeannos\">@RepTypeUseB</a> <a href="
+ "\"RepTypeUseB.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseB</a>&nbsp;RepeatingOnConstructor&nbsp;this,\n <a href="
+ "\"RepParameterA.html\" title=\"annotation in typeannos\">"
+ "@RepParameterA</a> <a href=\"RepParameterA.html\" title="
+ "\"annotation in typeannos\">@RepParameterA</a> <a href=\"RepParameterB.html"
+ "\" title=\"annotation in typeannos\">@RepParameterB</a> <a href="
+ "\"RepParameterB.html\" title=\"annotation in typeannos\">"
+ "@RepParameterB</a>\n java.lang.String&nbsp;parameter,\n"
+ " <a href=\"RepParameterA.html\" title=\"annotation in typeannos\">"
+ "@RepParameterA</a> <a href=\"RepParameterA.html\" title="
+ "\"annotation in typeannos\">@RepParameterA</a> <a href=\"RepParameterB.html"
+ "\" title=\"annotation in typeannos\">@RepParameterB</a> <a href="
+ "\"RepParameterB.html\" title=\"annotation in typeannos\">"
+ "@RepParameterB</a>\n java.lang.String <a href=\"RepTypeUseA.html"
+ "\" title=\"annotation in typeannos\">@RepTypeUseA</a> <a href="
+ "\"RepTypeUseA.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseA</a> <a href=\"RepTypeUseB.html\" title="
+ "\"annotation in typeannos\">@RepTypeUseB</a> <a href=\"RepTypeUseB.html"
+ "\" title=\"annotation in typeannos\">@RepTypeUseB</a> ...&nbsp;vararg)");
"Inner</span>&#8203;(<span class=\"arguments\"><a href=\"RepTypeUseA.html\" "
+ "title=\"annotation in typeannos\">@RepTypeUseA</a> <a href=\"RepTypeUseA.html\" "
+ "title=\"annotation in typeannos\">@RepTypeUseA</a> <a href=\"RepTypeUseB.html\" "
+ "title=\"annotation in typeannos\">@RepTypeUseB</a> <a href=\"RepTypeUseB.html\" "
+ "title=\"annotation in typeannos\">@RepTypeUseB</a>&nbsp;RepeatingOnConstructor&nbsp;this,\n"
+ "<a href=\"RepParameterA.html\" title=\"annotation in typeannos\">@RepParameterA</a> "
+ "<a href=\"RepParameterA.html\" title=\"annotation in typeannos\">@RepParameterA</a> "
+ "<a href=\"RepParameterB.html\" title=\"annotation in typeannos\">@RepParameterB</a> "
+ "<a href=\"RepParameterB.html\" title=\"annotation in typeannos\">@RepParameterB</a>\n"
+ "java.lang.String&nbsp;parameter,\n<a href=\"RepParameterA.html\" "
+ "title=\"annotation in typeannos\">@RepParameterA</a> "
+ "<a href=\"RepParameterA.html\" title=\"annotation in typeannos\">@RepParameterA</a> "
+ "<a href=\"RepParameterB.html\" title=\"annotation in typeannos\">@RepParameterB</a> "
+ "<a href=\"RepParameterB.html\" title=\"annotation in typeannos\">@RepParameterB</a>\n"
+ "java.lang.String <a href=\"RepTypeUseA.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseA</a> <a href=\"RepTypeUseA.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseA</a> <a href=\"RepTypeUseB.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseB</a> <a href=\"RepTypeUseB.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseB</a> ...&nbsp;vararg)</span>");
checkOutput("typeannos/RepeatingOnField.html", true,
"<code>(package private) java.lang.Integer</code></td>\n<th class=\"colSecond\" scope=\"row\">"
@ -519,57 +542,55 @@ public class TestTypeAnnotations extends JavadocTester {
+ "\"memberNameLink\"><a href=\"#sa"
+ "\">sa</a></span></code>",
"<pre><a href=\"RepFieldA.html\" title=\"annotation in typeannos\">"
+ "@RepFieldA</a> <a href=\"RepFieldA.html\" title="
+ "\"annotation in typeannos\">@RepFieldA</a>\n<a href=\"RepFieldB.html"
+ "\" title=\"annotation in typeannos\">@RepFieldB</a> <a href="
+ "\"RepFieldB.html\" title=\"annotation in typeannos\">"
+ "@RepFieldB</a>\njava.lang.Integer i1</pre>",
"<div class=\"memberSignature\"><span class=\"annotations\">"
+ "<a href=\"RepFieldA.html\" title=\"annotation in typeannos\">@RepFieldA</a> "
+ "<a href=\"RepFieldA.html\" title=\"annotation in typeannos\">@RepFieldA</a>\n"
+ "<a href=\"RepFieldB.html\" title=\"annotation in typeannos\">@RepFieldB</a> "
+ "<a href=\"RepFieldB.html\" title=\"annotation in typeannos\">@RepFieldB</a>\n"
+ "</span><span class=\"returnType\">java.lang.Integer</span>&nbsp;"
+ "<span class=\"memberName\">i1</span></div>",
"<pre><a href=\"RepTypeUseA.html\" title=\"annotation in typeannos"
+ "\">@RepTypeUseA</a> <a href=\"RepTypeUseA.html"
+ "\" title=\"annotation in typeannos\">@RepTypeUseA</a> "
+ "<a href=\"RepTypeUseB.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseB</a> <a href=\"RepTypeUseB.html\" title="
+ "\"annotation in typeannos\">@RepTypeUseB</a> java.lang.Integer i2</pre>",
"<div class=\"memberSignature\"><span class=\"returnType\">"
+ "<a href=\"RepTypeUseA.html\" title=\"annotation in typeannos\">@RepTypeUseA</a> "
+ "<a href=\"RepTypeUseA.html\" title=\"annotation in typeannos\">@RepTypeUseA</a> "
+ "<a href=\"RepTypeUseB.html\" title=\"annotation in typeannos\">@RepTypeUseB</a> "
+ "<a href=\"RepTypeUseB.html\" title=\"annotation in typeannos\">@RepTypeUseB</a> "
+ "java.lang.Integer</span>&nbsp;<span class=\"memberName\">i2</span></div>",
"<pre><a href=\"RepFieldA.html\" title=\"annotation in typeannos\">"
+ "@RepFieldA</a> <a href=\"RepFieldA.html\" title="
+ "\"annotation in typeannos\">@RepFieldA</a>\n<a href=\"RepFieldB.html"
+ "\" title=\"annotation in typeannos\">@RepFieldB</a> <a href="
+ "\"RepFieldB.html\" title=\"annotation in typeannos\">"
+ "@RepFieldB</a>\n<a href=\"RepTypeUseA.html\" title="
+ "\"annotation in typeannos\">@RepTypeUseA</a> <a href=\"RepTypeUseA.html"
+ "\" title=\"annotation in typeannos\">@RepTypeUseA</a> <a href="
+ "\"RepTypeUseB.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseB</a> <a href=\"RepTypeUseB.html\" title="
+ "\"annotation in typeannos\">@RepTypeUseB</a> java.lang.Integer i3</pre>",
"<div class=\"memberSignature\"><span class=\"annotations\">"
+ "<a href=\"RepFieldA.html\" title=\"annotation in typeannos\">@RepFieldA</a> "
+ "<a href=\"RepFieldA.html\" title=\"annotation in typeannos\">@RepFieldA</a>\n"
+ "<a href=\"RepFieldB.html\" title=\"annotation in typeannos\">@RepFieldB</a> "
+ "<a href=\"RepFieldB.html\" title=\"annotation in typeannos\">@RepFieldB</a>\n"
+ "</span><span class=\"returnType\"><a href=\"RepTypeUseA.html\" "
+ "title=\"annotation in typeannos\">@RepTypeUseA</a> "
+ "<a href=\"RepTypeUseA.html\" title=\"annotation in typeannos\">@RepTypeUseA</a> "
+ "<a href=\"RepTypeUseB.html\" title=\"annotation in typeannos\">@RepTypeUseB</a> "
+ "<a href=\"RepTypeUseB.html\" title=\"annotation in typeannos\">@RepTypeUseB</a> "
+ "java.lang.Integer</span>&nbsp;<span class=\"memberName\">i3</span></div>",
"<pre><a href=\"RepAllContextsA.html\" title=\"annotation in typeannos\">"
+ "@RepAllContextsA</a> <a href=\"RepAllContextsA.html"
+ "\" title=\"annotation in typeannos\">@RepAllContextsA</a>\n<a href="
+ "\"RepAllContextsB.html\" title=\"annotation in typeannos\">"
+ "@RepAllContextsB</a> <a href=\"RepAllContextsB.html"
+ "\" title=\"annotation in typeannos\">@RepAllContextsB</a>\n"
+ "<a href=\"RepAllContextsA.html\" title=\"annotation in typeannos\">"
+ "@RepAllContextsA</a> <a href=\"RepAllContextsA.html\" "
+ "title=\"annotation in typeannos\">@RepAllContextsA</a> <a href="
+ "\"RepAllContextsB.html\" title=\"annotation in typeannos\">"
+ "@RepAllContextsB</a> <a href=\"RepAllContextsB.html"
+ "\" title=\"annotation in typeannos\">@RepAllContextsB</a> java.lang.Integer i4</pre>",
"<div class=\"memberSignature\"><span class=\"annotations\">"
+ "<a href=\"RepAllContextsA.html\" title=\"annotation in typeannos\">@RepAllContextsA</a> "
+ "<a href=\"RepAllContextsA.html\" title=\"annotation in typeannos\">@RepAllContextsA</a>\n"
+ "<a href=\"RepAllContextsB.html\" title=\"annotation in typeannos\">@RepAllContextsB</a> "
+ "<a href=\"RepAllContextsB.html\" title=\"annotation in typeannos\">@RepAllContextsB</a>\n"
+ "</span><span class=\"returnType\"><a href=\"RepAllContextsA.html\" "
+ "title=\"annotation in typeannos\">@RepAllContextsA</a> "
+ "<a href=\"RepAllContextsA.html\" title=\"annotation in typeannos\">@RepAllContextsA</a> "
+ "<a href=\"RepAllContextsB.html\" title=\"annotation in typeannos\">@RepAllContextsB</a> "
+ "<a href=\"RepAllContextsB.html\" title=\"annotation in typeannos\">@RepAllContextsB</a> "
+ "java.lang.Integer</span>&nbsp;<span class=\"memberName\">i4</span></div>",
"<pre>java.lang.String <a href=\"RepTypeUseA.html\" title="
+ "\"annotation in typeannos\">@RepTypeUseA</a> <a href=\"RepTypeUseA.html"
+ "\" title=\"annotation in typeannos\">@RepTypeUseA</a> <a href="
+ "\"RepTypeUseB.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseB</a> <a href=\"RepTypeUseB.html\" title="
+ "\"annotation in typeannos\">@RepTypeUseB</a> [] <a href="
+ "\"RepTypeUseA.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseA</a> <a href=\"RepTypeUseA.html\" title="
+ "\"annotation in typeannos\">@RepTypeUseA</a> <a href=\"RepTypeUseB.html\" "
+ "title=\"annotation in typeannos\">@RepTypeUseB</a> <a href="
+ "\"RepTypeUseB.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseB</a> [] sa</pre>");
"<div class=\"memberSignature\"><span class=\"returnType\">java.lang.String "
+ "<a href=\"RepTypeUseA.html\" title=\"annotation in typeannos\">@RepTypeUseA</a> "
+ "<a href=\"RepTypeUseA.html\" title=\"annotation in typeannos\">@RepTypeUseA</a> "
+ "<a href=\"RepTypeUseB.html\" title=\"annotation in typeannos\">@RepTypeUseB</a> "
+ "<a href=\"RepTypeUseB.html\" title=\"annotation in typeannos\">@RepTypeUseB</a> [] "
+ "<a href=\"RepTypeUseA.html\" title=\"annotation in typeannos\">@RepTypeUseA</a> "
+ "<a href=\"RepTypeUseA.html\" title=\"annotation in typeannos\">@RepTypeUseA</a> "
+ "<a href=\"RepTypeUseB.html\" title=\"annotation in typeannos\">@RepTypeUseB</a> "
+ "<a href=\"RepTypeUseB.html\" title=\"annotation in typeannos\">@RepTypeUseB</a> []"
+ "</span>&nbsp;<span class=\"memberName\">sa</span></div>");
checkOutput("typeannos/RepeatingOnMethod.html", true,
"<code>(package private) java.lang.String</code></td>\n<th class=\"colSecond\" scope=\"row\">"
@ -608,7 +629,7 @@ public class TestTypeAnnotations extends JavadocTester {
"<code><span class=\"memberNameLink\"><a href=\""
+ "#test5(java.lang.String,java.lang.String...)\">test5</a></span>"
+ "&#8203;(java.lang.String&nbsp;parameter,\n java.lang.String <a href="
+ "&#8203;(java.lang.String&nbsp;parameter,\njava.lang.String <a href="
+ "\"RepTypeUseA.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseA</a> <a href=\"RepTypeUseA.html\" title="
+ "\"annotation in typeannos\">@RepTypeUseA</a> <a href=\"RepTypeUseB.html"
@ -616,69 +637,63 @@ public class TestTypeAnnotations extends JavadocTester {
+ "\"RepTypeUseB.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseB</a> ...&nbsp;vararg)</code>",
"<a href=\"RepMethodA.html\" title=\"annotation in typeannos\">"
+ "@RepMethodA</a> <a href=\"RepMethodA.html\" title="
+ "\"annotation in typeannos\">@RepMethodA</a>\n<a href=\"RepMethodB.html\""
+ " title=\"annotation in typeannos\">@RepMethodB</a> <a href="
+ "\"RepMethodB.html\" title=\"annotation in typeannos\">"
+ "@RepMethodB</a>\njava.lang.String&nbsp;test1()",
"<a href=\"RepMethodA.html\" title=\"annotation in typeannos\">@RepMethodA</a> "
+ "<a href=\"RepMethodA.html\" title=\"annotation in typeannos\">@RepMethodA</a>\n"
+ "<a href=\"RepMethodB.html\" title=\"annotation in typeannos\">@RepMethodB</a> "
+ "<a href=\"RepMethodB.html\" title=\"annotation in typeannos\">@RepMethodB</a>\n"
+ "</span><span class=\"returnType\">java.lang.String</span>&nbsp;"
+ "<span class=\"memberName\">test1</span>()",
"<a href=\"RepTypeUseA.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseA</a> <a href=\"RepTypeUseA.html\" title="
+ "\"annotation in typeannos\">@RepTypeUseA</a> <a href=\"RepTypeUseB.html\" "
+ "title=\"annotation in typeannos\">@RepTypeUseB</a> <a href=\"RepTypeUseB.html\" "
+ "title=\"annotation in typeannos\">@RepTypeUseB</a> java.lang.String&nbsp;test2()",
+ "title=\"annotation in typeannos\">@RepTypeUseB</a> java.lang.String</span>"
+ "&nbsp;<span class=\"memberName\">test2</span>()",
"<a href=\"RepMethodA.html\" title=\"annotation in typeannos\">"
+ "@RepMethodA</a> <a href=\"RepMethodA.html\" title="
+ "\"annotation in typeannos\">@RepMethodA</a>\n<a href=\"RepMethodB.html\" "
+ "title=\"annotation in typeannos\">@RepMethodB</a> <a href="
+ "\"RepMethodB.html\" title=\"annotation in typeannos\">"
+ "@RepMethodB</a>\n<a href=\"RepTypeUseA.html\" title="
+ "\"annotation in typeannos\">@RepTypeUseA</a> <a href=\"RepTypeUseA.html\" "
+ "title=\"annotation in typeannos\">@RepTypeUseA</a> <a href="
+ "\"RepTypeUseB.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseB</a> <a href=\"RepTypeUseB.html\" title="
+ "\"annotation in typeannos\">@RepTypeUseB</a> java.lang.String&nbsp;test3()",
"<a href=\"RepMethodA.html\" title=\"annotation in typeannos\">@RepMethodA</a> "
+ "<a href=\"RepMethodA.html\" title=\"annotation in typeannos\">@RepMethodA</a>\n"
+ "<a href=\"RepMethodB.html\" title=\"annotation in typeannos\">@RepMethodB</a> "
+ "<a href=\"RepMethodB.html\" title=\"annotation in typeannos\">@RepMethodB</a>\n"
+ "</span><span class=\"returnType\"><a href=\"RepTypeUseA.html\" "
+ "title=\"annotation in typeannos\">@RepTypeUseA</a> <a href=\"RepTypeUseA.html\" "
+ "title=\"annotation in typeannos\">@RepTypeUseA</a> <a href=\"RepTypeUseB.html\" "
+ "title=\"annotation in typeannos\">@RepTypeUseB</a> <a href=\"RepTypeUseB.html\" "
+ "title=\"annotation in typeannos\">@RepTypeUseB</a> java.lang.String</span>&nbsp;"
+ "<span class=\"memberName\">test3</span>()",
"<a href=\"RepAllContextsA.html\" title=\"annotation in typeannos\">"
+ "@RepAllContextsA</a> <a href=\"RepAllContextsA.html\" "
+ "title=\"annotation in typeannos\">@RepAllContextsA</a>\n<a href="
+ "\"RepAllContextsB.html\" title=\"annotation in typeannos\">"
+ "@RepAllContextsB</a> <a href=\"RepAllContextsB.html\" "
+ "title=\"annotation in typeannos\">@RepAllContextsB</a>\n<a href="
+ "\"RepAllContextsA.html\" title=\"annotation in typeannos\">"
+ "@RepAllContextsA</a> <a href=\"RepAllContextsA.html\" "
+ "title=\"annotation in typeannos\">@RepAllContextsA</a> <a href="
+ "\"RepAllContextsB.html\" title=\"annotation in typeannos\">"
+ "@RepAllContextsB</a> <a href=\"RepAllContextsB.html\" "
+ "title=\"annotation in typeannos\">@RepAllContextsB</a> java.lang.String&nbsp;test4()",
"<a href=\"RepAllContextsA.html\" title=\"annotation in typeannos\">@RepAllContextsA</a> "
+ "<a href=\"RepAllContextsA.html\" title=\"annotation in typeannos\">@RepAllContextsA</a>\n"
+ "<a href=\"RepAllContextsB.html\" title=\"annotation in typeannos\">@RepAllContextsB</a> "
+ "<a href=\"RepAllContextsB.html\" title=\"annotation in typeannos\">@RepAllContextsB</a>\n"
+ "</span><span class=\"returnType\"><a href=\"RepAllContextsA.html\" "
+ "title=\"annotation in typeannos\">@RepAllContextsA</a> <a href=\"RepAllContextsA.html\" "
+ "title=\"annotation in typeannos\">@RepAllContextsA</a> <a href=\"RepAllContextsB.html\" "
+ "title=\"annotation in typeannos\">@RepAllContextsB</a> <a href=\"RepAllContextsB.html\" "
+ "title=\"annotation in typeannos\">@RepAllContextsB</a> java.lang.String</span>&nbsp;"
+ "<span class=\"memberName\">test4</span>()",
"java.lang.String&nbsp;test5&#8203;(<a href=\"RepTypeUseA.html\" "
+ "title=\"annotation in typeannos\">@RepTypeUseA</a> <a href="
+ "\"RepTypeUseA.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseA</a> <a href=\"RepTypeUseB.html\" title="
+ "\"annotation in typeannos\">@RepTypeUseB</a> <a href=\"RepTypeUseB.html\" "
+ "title=\"annotation in typeannos\">@RepTypeUseB</a>&nbsp;RepeatingOnMethod&nbsp;"
+ "this,\n <a href=\"RepParameterA.html\" "
+ "title=\"annotation in typeannos\">@RepParameterA</a> <a href="
+ "\"RepParameterA.html\" title=\"annotation in typeannos\">"
+ "@RepParameterA</a> <a href=\"RepParameterB.html\" "
+ "title=\"annotation in typeannos\">@RepParameterB</a> <a href="
+ "\"RepParameterB.html\" title=\"annotation in typeannos\">"
+ "@RepParameterB</a>\n java.lang.String&nbsp;parameter,\n"
+ " <a href=\"RepParameterA.html\" title="
+ "\"annotation in typeannos\">@RepParameterA</a> <a href=\"RepParameterA.html\""
+ " title=\"annotation in typeannos\">@RepParameterA</a> <a href="
+ "\"RepParameterB.html\" title=\"annotation in typeannos\">"
+ "@RepParameterB</a> <a href=\"RepParameterB.html\" title="
+ "\"annotation in typeannos\">@RepParameterB</a>\n "
+ "java.lang.String <a href=\"RepTypeUseA.html\" title="
+ "\"annotation in typeannos\">@RepTypeUseA</a> <a href=\"RepTypeUseA.html\" "
+ "title=\"annotation in typeannos\">@RepTypeUseA</a> <a href="
+ "\"RepTypeUseB.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseB</a> <a href=\"RepTypeUseB.html\" title="
+ "\"annotation in typeannos\">@RepTypeUseB</a> ...&nbsp;vararg)");
"java.lang.String</span>&nbsp;<span class=\"memberName\">test5</span>&#8203;("
+ "<span class=\"arguments\"><a href=\"RepTypeUseA.html\" "
+ "title=\"annotation in typeannos\">@RepTypeUseA</a> "
+ "<a href=\"RepTypeUseA.html\" title=\"annotation in typeannos\">@RepTypeUseA</a> "
+ "<a href=\"RepTypeUseB.html\" title=\"annotation in typeannos\">@RepTypeUseB</a> "
+ "<a href=\"RepTypeUseB.html\" title=\"annotation in typeannos\">@RepTypeUseB</a>"
+ "&nbsp;RepeatingOnMethod&nbsp;this,\n"
+ "<a href=\"RepParameterA.html\" title=\"annotation in typeannos\">@RepParameterA</a> "
+ "<a href=\"RepParameterA.html\" title=\"annotation in typeannos\">@RepParameterA</a> "
+ "<a href=\"RepParameterB.html\" title=\"annotation in typeannos\">@RepParameterB</a> "
+ "<a href=\"RepParameterB.html\" title=\"annotation in typeannos\">@RepParameterB</a>\n"
+ "java.lang.String&nbsp;parameter,\n"
+ "<a href=\"RepParameterA.html\" title=\"annotation in typeannos\">@RepParameterA</a> "
+ "<a href=\"RepParameterA.html\" title=\"annotation in typeannos\">@RepParameterA</a> "
+ "<a href=\"RepParameterB.html\" title=\"annotation in typeannos\">@RepParameterB</a> "
+ "<a href=\"RepParameterB.html\" title=\"annotation in typeannos\">@RepParameterB</a>\n"
+ "java.lang.String <a href=\"RepTypeUseA.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseA</a> <a href=\"RepTypeUseA.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseA</a> <a href=\"RepTypeUseB.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseB</a> <a href=\"RepTypeUseB.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseB</a> ...&nbsp;vararg)");
checkOutput("typeannos/RepeatingOnTypeParametersBoundsTypeArgumentsOnMethod.html", true,
"<code>(package private) &lt;T&gt;&nbsp;java.lang.String</code></td>\n"
@ -699,7 +714,9 @@ public class TestTypeAnnotations extends JavadocTester {
+ "<span class=\"memberNameLink\"><a href=\"#"
+ "test()\">test</a></span>()</code>",
"java.lang.String&nbsp;test&#8203;(<a href=\"RepTypeUseA.html\" "
"<span class=\"returnType\">java.lang.String</span>&nbsp;"
+ "<span class=\"memberName\">test</span>"
+ "&#8203;(<span class=\"arguments\"><a href=\"RepTypeUseA.html\" "
+ "title=\"annotation in typeannos\">@RepTypeUseA</a> <a href="
+ "\"RepTypeUseA.html\" title=\"annotation in typeannos\">"
+ "@RepTypeUseA</a> <a href=\"RepTypeUseB.html\" title="
@ -713,11 +730,11 @@ public class TestTypeAnnotations extends JavadocTester {
+ "title=\"annotation in typeannos\">@RepTypeUseB</a> T&gt;&nbsp;this)");
checkOutput("typeannos/RepeatingOnVoidMethodDeclaration.html", true,
"<a href=\"RepMethodA.html\" title=\"annotation in typeannos\">"
+ "@RepMethodA</a> <a href=\"RepMethodA.html\" title="
+ "\"annotation in typeannos\">@RepMethodA</a>\n<a href=\"RepMethodB.html"
+ "\" title=\"annotation in typeannos\">@RepMethodB</a> <a href="
+ "\"RepMethodB.html\" title=\"annotation in typeannos\">"
+ "@RepMethodB</a>\nvoid&nbsp;test()");
"<a href=\"RepMethodA.html\" title=\"annotation in typeannos\">@RepMethodA</a> "
+ "<a href=\"RepMethodA.html\" title=\"annotation in typeannos\">@RepMethodA</a>\n"
+ "<a href=\"RepMethodB.html\" title=\"annotation in typeannos\">@RepMethodB</a> "
+ "<a href=\"RepMethodB.html\" title=\"annotation in typeannos\">@RepMethodB</a>\n"
+ "</span><span class=\"returnType\">void</span>&nbsp;"
+ "<span class=\"memberName\">test</span>()");
}
}

@ -54,7 +54,7 @@ public class TestTypeParameters extends JavadocTester {
checkExit(Exit.OK);
checkOutput("pkg/C.html", true,
"<td class=\"colFirst\"><code>&lt;W extends java.lang.String,&#8203;V extends "
"<td class=\"colFirst\"><code>&lt;W extends java.lang.String,&#8203;\nV extends "
+ "java.util.List&gt;<br>java.lang.Object</code></td>",
"<code>&lt;T&gt;&nbsp;java.lang.Object</code>");

@ -272,7 +272,7 @@ public class TestVisibleMembers extends JavadocTester {
checkOrder("p/C.html",
"METHOD DETAIL",
"public", "void", "method()",
"public", "void", "method",
"See Also:",
"sub()",
"sub1()");
@ -307,7 +307,7 @@ public class TestVisibleMembers extends JavadocTester {
checkOrder("p/C.html",
"METHOD DETAIL",
"public", "void", "method()", "See Also:", "sub()", "I.sub1()",
"public", "void", "method", "See Also:", "sub()", "I.sub1()",
"public", "void", "m", "Method in C. See", "I.length()"
);
@ -411,10 +411,10 @@ public class TestVisibleMembers extends JavadocTester {
checkOrder("p/C.html",
"METHOD DETAIL",
"public", "void", "m()", "Method m in p.B",
"public", "void", "n()", "Method n in p.A",
"public", "void", "o()", "Description copied from class:", ">A<", "Method o in p.A",
"public", "void", "p()", "Method p in p.B",
"public", "void", "m", "Method m in p.B",
"public", "void", "n", "Method n in p.A",
"public", "void", "o", "Description copied from class:", ">A<", "Method o in p.A",
"public", "void", "p", "Method p in p.B",
"END OF CLASS DATA");
checkOutput("p/C.html", false,
@ -471,10 +471,10 @@ public class TestVisibleMembers extends JavadocTester {
checkOrder("p/C.html",
"METHOD DETAIL",
"public", "void", "m()", "Method m in p.B",
"public", "void", "n()", "Method n in p.A",
"public", "void", "o()", "Description copied from class:", ">A<", "Method o in p.A",
"public", "void", "p()", "Method p in p.B",
"public", "void", "m", "Method m in p.B",
"public", "void", "n", "Method n in p.A",
"public", "void", "o", "Description copied from class:", ">A<", "Method o in p.A",
"public", "void", "p", "Method p in p.B",
"END OF CLASS DATA");
checkOutput("p/C.html", false,