8241518: Member signature parameter span contains closing but not opening parens

Reviewed-by: prappo
This commit is contained in:
Hannes Wallnöfer 2020-07-31 12:09:59 +02:00
parent d5c4c292a0
commit 1cc8d3a34b
12 changed files with 107 additions and 106 deletions
src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html
test/langtools/jdk/javadoc/doclet
testIndentation
testJavaFX
testLinkOption
testMemberInheritance
testMethodSignature
testNewLanguageFeatures
testPrivateClasses
testRecordTypes
testSerializedFormWithClassFile
testTypeAnnotations

@ -177,14 +177,11 @@ public abstract class AbstractExecutableMemberWriter extends AbstractMemberWrite
*/
protected void addParameters(ExecutableElement member, Content htmltree) {
Content paramTree = getParameters(member, false);
if (paramTree.isEmpty()) {
htmltree.add("()");
} else {
if (paramTree.charCount() > 2) {
// only add zero-width-space for non-empty parameters
htmltree.add(Entity.ZERO_WIDTH_SPACE);
htmltree.add("(");
htmltree.add(paramTree);
paramTree.add(")");
}
htmltree.add(paramTree);
}
/**
@ -196,13 +193,14 @@ public abstract class AbstractExecutableMemberWriter extends AbstractMemberWrite
*/
protected Content getParameters(ExecutableElement member, boolean includeAnnotations) {
Content paramTree = new ContentBuilder();
paramTree.add("(");
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;
sep = "," + DocletConstants.NL + " ";
}
int paramstart;
ExecutableType instMeth = utils.asInstantiatedMethodType(typeElement, member);
@ -217,6 +215,7 @@ public abstract class AbstractExecutableMemberWriter extends AbstractMemberWrite
writer.addAnnotationInfo(param, paramTree);
if (foundAnnotations) {
paramTree.add(DocletConstants.NL);
paramTree.add(" ");
}
}
addParam(member, param, paramType,
@ -228,19 +227,22 @@ public abstract class AbstractExecutableMemberWriter extends AbstractMemberWrite
for (int i = paramstart + 1; i < parameters.size(); i++) {
paramTree.add(",");
paramTree.add(DocletConstants.NL);
paramTree.add(" ");
if (includeAnnotations) {
boolean foundAnnotations =
writer.addAnnotationInfo(parameters.get(i),
paramTree);
if (foundAnnotations) {
paramTree.add(DocletConstants.NL);
paramTree.add(" ");
}
}
addParam(member, parameters.get(i), instMeth.getParameterTypes().get(i),
(i == parameters.size() - 1) && member.isVarArgs(),
paramTree);
}
paramTree.add(")");
return paramTree;
}

@ -686,12 +686,11 @@ public abstract class AbstractMemberWriter implements MemberSummaryWriter, Membe
// Record current position for indentation of exceptions
int indentSize = htmltree.charCount() - lastLineSeparator;
if (parameters.isEmpty()) {
htmltree.add("()");
if (parameters.charCount() == 2) {
// empty parameters are added without packing
htmltree.add(parameters);
} else {
parameters.add(")");
htmltree.add(Entity.ZERO_WIDTH_SPACE);
htmltree.add("(");
htmltree.add(HtmlTree.SPAN(HtmlStyle.parameters, parameters));
}

@ -51,9 +51,9 @@ public class TestIndentation extends JavadocTester {
"""
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span c\
lass="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">void</spa\
n>&nbsp;<span class="member-name">m</span>&#8203;(<span class="parameters">T&nbs\
n>&nbsp;<span class="member-name">m</span>&#8203;<span class="parameters">(T&nbs\
p;t1,
T&nbsp;t2)</span>
T&nbsp;t2)</span>
throws <span class="exceptions">java.lang.Exception</span></div>""");
// Test indentation of annotations and annotated method arguments

@ -62,7 +62,7 @@ public class TestJavaFX extends JavadocTester {
"""
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<\
span class="return-type">void</span>&nbsp;<span class="member-name">setRate</spa\
n>&#8203;(<span class="parameters">double&nbsp;value)</span></div>
n>&#8203;<span class="parameters">(double&nbsp;value)</span></div>
<div class="block">Sets the value of the property rate.</div>
<dl class="notes">
<dt>Property description:</dt>""",
@ -114,7 +114,7 @@ public class TestJavaFX extends JavadocTester {
<h3>setPaused</h3>
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<\
span class="return-type">void</span>&nbsp;<span class="member-name">setPaused</s\
pan>&#8203;(<span class="parameters">boolean&nbsp;value)</span></div>
pan>&#8203;<span class="parameters">(boolean&nbsp;value)</span></div>
<div class="block">Sets the value of the property paused.</div>
<dl class="notes">
<dt>Property description:</dt>
@ -147,7 +147,7 @@ public class TestJavaFX extends JavadocTester {
<h3>setRate</h3>
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<\
span class="return-type">void</span>&nbsp;<span class="member-name">setRate</spa\
n>&#8203;(<span class="parameters">double&nbsp;value)</span></div>
n>&#8203;<span class="parameters">(double&nbsp;value)</span></div>
<div class="block">Sets the value of the property rate.</div>
<dl class="notes">
<dt>Property description:</dt>

@ -77,12 +77,12 @@ public class TestLinkOption extends JavadocTester {
//Make sure the parameters are formatted properly when the -link option is used.
"""
(int&nbsp;p1,
int&nbsp;p2,
int&nbsp;p3)""",
int&nbsp;p2,
int&nbsp;p3)""",
"""
(int&nbsp;p1,
int&nbsp;p2,
<a href=\"""" + url + """
int&nbsp;p2,
<a href=\"""" + url + """
java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;p3)""");
checkOutput("pkg/B.html", true,

@ -105,7 +105,7 @@ public class TestMemberInheritance extends JavadocTester {
<th class="col-second" scope="row"><code><span class="member-name-link"><a href=\
"#between(java.time.LocalDate,java.time.LocalDate)">between</a></span>&#8203;(ja\
va.time.LocalDate&nbsp;startDateInclusive,
java.time.LocalDate&nbsp;endDateExclusive)</code></th>""");
java.time.LocalDate&nbsp;endDateExclusive)</code></th>""");
checkOutput("pkg1/Implementer.html", false,
"""
@ -139,7 +139,7 @@ public class TestMemberInheritance extends JavadocTester {
<h3 id="parentMethod(java.lang.Object)">parentMethod</h3>
<div class="member-signature"><span class="modifiers">protected abstract</span>&\
nbsp;<span class="return-type">java.lang.String</span>&nbsp;<span class="member-\
name">parentMethod</span>&#8203;(<span class="parameters">java.lang.String&nbsp;\
name">parentMethod</span>&#8203;<span class="parameters">(java.lang.String&nbsp;\
t)</span>
throws <span class="exceptions">java.lang.IllegalArgumentException,
java.lang.InterruptedException,
@ -180,7 +180,7 @@ public class TestMemberInheritance extends JavadocTester {
<h3 id="method(java.lang.Object)">method</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span c\
lass="return-type">java.lang.String</span>&nbsp;<span class="member-name">method\
</span>&#8203;(<span class="parameters">java.lang.String&nbsp;t)</span></div>
</span>&#8203;<span class="parameters">(java.lang.String&nbsp;t)</span></div>
</section>""");
checkOutput("index-all.html", true,
@ -227,7 +227,7 @@ public class TestMemberInheritance extends JavadocTester {
<h3 id="parentMethod(java.lang.Object)">parentMethod</h3>
<div class="member-signature"><span class="modifiers">protected abstract</span>&\
nbsp;<span class="return-type">java.lang.String</span>&nbsp;<span class="member-\
name">parentMethod</span>&#8203;(<span class="parameters">java.lang.String&nbsp;\
name">parentMethod</span>&#8203;<span class="parameters">(java.lang.String&nbsp;\
t)</span>
throws <span class="exceptions">java.lang.IllegalArgumentException,
java.lang.InterruptedException,

@ -55,19 +55,19 @@ public class TestMethodSignature extends JavadocTester {
"""
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;\
<span class="return-type">void</span>&nbsp;<span class="member-name">simpleMetho\
d</span>&#8203;(<span class="parameters">int&nbsp;i,
java.lang.String&nbsp;s,
boolean&nbsp;b)</span></div>""",
d</span>&#8203;<span class="parameters">(int&nbsp;i,
java.lang.String&nbsp;s,
boolean&nbsp;b)</span></div>""",
"""
<div class="member-signature"><span class="annotations">@Generated(value="SomeGeneratedName",
date="a date",
comments="some comment about the method below")
</span><span class="modifiers">public static</span>&nbsp;<span class="return-typ\
e">void</span>&nbsp;<span class="member-name">annotatedMethod</span>&#8203;(<spa\
n class="parameters">int&nbsp;i,
java.lang.String&nbsp;s,
boolean&nbsp;b)</span></div>""",
e">void</span>&nbsp;<span class="member-name">annotatedMethod</span>&#8203;<span\
class="parameters">(int&nbsp;i,
java.lang.String&nbsp;s,
boolean&nbsp;b)</span></div>""",
"""
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;\
@ -83,15 +83,15 @@ public class TestMethodSignature extends JavadocTester {
<span class="return-type"><a href="C.With8Types.html" title="class in pkg">C.Wit\
h8Types</a>&lt;T1,&#8203;T2,&#8203;T3,&#8203;T4,&#8203;T5,&#8203;T6,&#8203;T7,&#\
8203;T8&gt;</span>&nbsp;<span class="member-name">bigGenericMethod</span>&#8203;\
(<span class="parameters"><a href="C.F0.html" title="interface in pkg">C.F0</a>&\
<span class="parameters">(<a href="C.F0.html" title="interface in pkg">C.F0</a>&\
lt;? extends T1&gt;&nbsp;t1,
<a href="C.F0.html" title="interface in pkg">C.F0</a>&lt;? extends T2&gt;&nbsp;t2,
<a href="C.F0.html" title="interface in pkg">C.F0</a>&lt;? extends T3&gt;&nbsp;t3,
<a href="C.F0.html" title="interface in pkg">C.F0</a>&lt;? extends T4&gt;&nbsp;t4,
<a href="C.F0.html" title="interface in pkg">C.F0</a>&lt;? extends T5&gt;&nbsp;t5,
<a href="C.F0.html" title="interface in pkg">C.F0</a>&lt;? extends T6&gt;&nbsp;t6,
<a href="C.F0.html" title="interface in pkg">C.F0</a>&lt;? extends T7&gt;&nbsp;t7,
<a href="C.F0.html" title="interface in pkg">C.F0</a>&lt;? extends T8&gt;&nbsp;t8)</span>
<a href="C.F0.html" title="interface in pkg">C.F0</a>&lt;? extends T2&gt;&nbsp;t2,
<a href="C.F0.html" title="interface in pkg">C.F0</a>&lt;? extends T3&gt;&nbsp;t3,
<a href="C.F0.html" title="interface in pkg">C.F0</a>&lt;? extends T4&gt;&nbsp;t4,
<a href="C.F0.html" title="interface in pkg">C.F0</a>&lt;? extends T5&gt;&nbsp;t5,
<a href="C.F0.html" title="interface in pkg">C.F0</a>&lt;? extends T6&gt;&nbsp;t6,
<a href="C.F0.html" title="interface in pkg">C.F0</a>&lt;? extends T7&gt;&nbsp;t7,
<a href="C.F0.html" title="interface in pkg">C.F0</a>&lt;? extends T8&gt;&nbsp;t8)</span>
throws <span class="exceptions">java.lang.IllegalArgumentException,
java.lang.IllegalStateException</span></div>""",
@ -111,15 +111,15 @@ public class TestMethodSignature extends JavadocTester {
<span class="return-type"><a href="C.With8Types.html" title="class in pkg">C.Wit\
h8Types</a>&lt;T1,&#8203;T2,&#8203;T3,&#8203;T4,&#8203;T5,&#8203;T6,&#8203;T7,&#\
8203;T8&gt;</span>&nbsp;<span class="member-name">bigGenericAnnotatedMethod</spa\
n>&#8203;(<span class="parameters"><a href="C.F0.html" title="interface in pkg">\
n>&#8203;<span class="parameters">(<a href="C.F0.html" title="interface in pkg">\
C.F0</a>&lt;? extends T1&gt;&nbsp;t1,
<a href="C.F0.html" title="interface in pkg">C.F0</a>&lt;? extends T2&gt;&nbsp;t2,
<a href="C.F0.html" title="interface in pkg">C.F0</a>&lt;? extends T3&gt;&nbsp;t3,
<a href="C.F0.html" title="interface in pkg">C.F0</a>&lt;? extends T4&gt;&nbsp;t4,
<a href="C.F0.html" title="interface in pkg">C.F0</a>&lt;? extends T5&gt;&nbsp;t5,
<a href="C.F0.html" title="interface in pkg">C.F0</a>&lt;? extends T6&gt;&nbsp;t6,
<a href="C.F0.html" title="interface in pkg">C.F0</a>&lt;? extends T7&gt;&nbsp;t7,
<a href="C.F0.html" title="interface in pkg">C.F0</a>&lt;? extends T8&gt;&nbsp;t8)</span>
<a href="C.F0.html" title="interface in pkg">C.F0</a>&lt;? extends T2&gt;&nbsp;t2,
<a href="C.F0.html" title="interface in pkg">C.F0</a>&lt;? extends T3&gt;&nbsp;t3,
<a href="C.F0.html" title="interface in pkg">C.F0</a>&lt;? extends T4&gt;&nbsp;t4,
<a href="C.F0.html" title="interface in pkg">C.F0</a>&lt;? extends T5&gt;&nbsp;t5,
<a href="C.F0.html" title="interface in pkg">C.F0</a>&lt;? extends T6&gt;&nbsp;t6,
<a href="C.F0.html" title="interface in pkg">C.F0</a>&lt;? extends T7&gt;&nbsp;t7,
<a href="C.F0.html" title="interface in pkg">C.F0</a>&lt;? extends T8&gt;&nbsp;t8)</span>
throws <span class="exc\
eptions">java.lang.IllegalArgumentException,
java.lang.IllegalStateException</span></div>

@ -82,7 +82,7 @@ public class TestNewLanguageFeatures extends JavadocTester {
"""
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;\
<span class="return-type"><a href="Coin.html" title="enum in pkg">Coin</a></span\
>&nbsp;<span class="member-name">valueOf</span>&#8203;(<span class="parameters">\
>&nbsp;<span class="member-name">valueOf</span>&#8203;<span class="parameters">(\
java.lang.String&nbsp;name)</span></div>
<div class="block">Returns the enum constant of this type with the specified name.
The string must match <i>exactly</i> an identifier used to declare an
@ -134,9 +134,9 @@ public class TestNewLanguageFeatures extends JavadocTester {
lass="type-parameters">&lt;T extends java.util.List,&#8203;
V&gt;</span>
<span class="return-type">java.lang.String[]</span>&nbsp;<span class="member-nam\
e">methodThatHasTypeParameters</span>&#8203;(<span class="parameters">T&nbsp;par\
e">methodThatHasTypeParameters</span>&#8203;<span class="parameters">(T&nbsp;par\
am1,
V&nbsp;param2)</span></div>""",
V&nbsp;param2)</span></div>""",
// Method that returns TypeParameters
"""
<td class="col-first"><code><a href="TypeParameters.html" title="type parameter in TypeParameters">E</a>[]</code></td>
@ -148,7 +148,7 @@ public class TestNewLanguageFeatures extends JavadocTester {
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span c\
lass="return-type"><a href="TypeParameters.html" title="type parameter in TypePa\
rameters">E</a>[]</span>&nbsp;<span class="member-name">methodThatReturnsTypePar\
ameterA</span>&#8203;(<span class="parameters"><a href="TypeParameters.html" tit\
ameterA</span>&#8203;<span class="parameters">(<a href="TypeParameters.html" tit\
le="type parameter in TypeParameters">E</a>[]&nbsp;e)</span></div>
""",
"""
@ -225,7 +225,7 @@ public class TestNewLanguageFeatures extends JavadocTester {
lass="type-parameters">&lt;T extends java.lang.Number &amp; java.lang.Runnable&g\
t;</span>
<span class="return-type">T</span>&nbsp;<span class="member-name">foo</span>&#82\
03;(<span class="parameters">T&nbsp;t)</span></div>""");
03;<span class="parameters">(T&nbsp;t)</span></div>""");
//==============================================================
// Test Class-Use Documentation for Type Parameters.
@ -551,21 +551,21 @@ public class TestNewLanguageFeatures extends JavadocTester {
"""
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span c\
lass="return-type">void</span>&nbsp;<span class="member-name">methodWithParams</\
span>&#8203;(<span class="parameters"><a href="AnnotationType.html" title="annot\
span>&#8203;<span class="parameters">(<a href="AnnotationType.html" title="annot\
ation in pkg">@AnnotationType</a>(<a href="AnnotationType.html#optional()">optio\
nal</a>="Parameter Annotation",<a href="AnnotationType.html#required()">required\
</a>=1994)
int&nbsp;documented,
int&nbsp;undocmented)</span></div>""",
int&nbsp;documented,
int&nbsp;undocmented)</span></div>""",
// CONSTRUCTOR PARAMS
"""
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span c\
lass="member-name">AnnotationTypeUsage</span>&#8203;(<span class="parameters"><a\
lass="member-name">AnnotationTypeUsage</span>&#8203;<span class="parameters">(<a\
href="AnnotationType.html" title="annotation in pkg">@AnnotationType</a>(<a hre\
f="AnnotationType.html#optional()">optional</a>="Constructor Param Annotation",<\
a href="AnnotationType.html#required()">required</a>=1994)
int&nbsp;documented,
int&nbsp;undocmented)</span></div>""");
int&nbsp;documented,
int&nbsp;undocmented)</span></div>""");
//=================================
// Annotatation Type Usage

@ -73,7 +73,7 @@ public class TestPrivateClasses extends JavadocTester {
"""
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span c\
lass="return-type">void</span>&nbsp;<span class="member-name">methodInheritedFro\
mParent</span>&#8203;(<span class="parameters">int&nbsp;p1)</span>
mParent</span>&#8203;<span class="parameters">(int&nbsp;p1)</span>
throws <span class="exceptions">java.lang.Exception</span></div>""",
"""
<dl class="notes">

@ -478,7 +478,7 @@ public class TestRecordTypes extends JavadocTester {
<a href="Anno.html" title="annotation in p">@Anno</a>""";
String rcAnno = t.contains(ElementType.RECORD_COMPONENT) ? anno + " " : "";
String fAnno = t.contains(ElementType.FIELD) ? "<span class=\"annotations\">" + anno + "\n</span>" : "";
String pAnno = t.contains(ElementType.PARAMETER) ? anno + "\n" : "";
String pAnno = t.contains(ElementType.PARAMETER) ? anno + "\n " : "";
String mAnno= t.contains(ElementType.METHOD) ? "<span class=\"annotations\">" + anno + "\n</span>" : "";
checkOutput("p/R.html", true,
@ -495,7 +495,7 @@ public class TestRecordTypes extends JavadocTester {
/span>&nbsp;<span class="member-name">i</span></div>""",
"""
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span c\
lass="member-name">R</span>&#8203;(<span class="parameters">"""
lass="member-name">R</span>&#8203;<span class="parameters">("""
+ pAnno
+ "int&nbsp;i)</span></div>",
"<div class=\"member-signature\">"

@ -76,7 +76,7 @@ public class TestSerializedFormWithClassFile extends JavadocTester {
"""
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span c\
lass="return-type">void</span>&nbsp;<span class="member-name">readObject</span>&\
#8203;(<span class="parameters">java.io.ObjectInputStream&nbsp;arg0)</span>
#8203;<span class="parameters">(java.io.ObjectInputStream&nbsp;arg0)</span>
throws <span class="exceptions">java.lang.ClassNotFoundException,
java.io.IOException</span></div>
""");

@ -230,14 +230,14 @@ public class TestTypeAnnotations extends JavadocTester {
checkOutput("typeannos/Parameters.html", true,
"""
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span c\
lass="member-name">unannotated</span>&#8203;(<span class="parameters"><a href="P\
lass="member-name">unannotated</span>&#8203;<span class="parameters">(<a href="P\
araParameterized.html" title="class in typeannos">ParaParameterized</a>&lt;java.\
lang.String,&#8203;java.lang.String&gt;&nbsp;a)</span></div>""",
"""
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span c\
lass="member-name">nestedParaParameterized</span>&#8203;(<span class="parameters\
"><a href="ParaParameterized.html" title="class in typeannos">ParaParameterized<\
lass="member-name">nestedParaParameterized</span>&#8203;<span class="parameters\
">(<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\
@ -248,7 +248,7 @@ public class TestTypeAnnotations extends JavadocTester {
// When JDK-8068737 is fixed, we should change the order
"""
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span c\
lass="member-name">array2Deep</span>&#8203;(<span class="parameters"><a href="Pa\
lass="member-name">array2Deep</span>&#8203;<span class="parameters">(<a href="Pa\
ramA.html" title="annotation in typeannos">@ParamA</a> java.lang.String <a href=\
"ParamB.html" title="annotation in typeannos">@ParamB</a> [] <a href="ParamA.htm\
l" title="annotation in typeannos">@ParamA</a> []&nbsp;a)</span></div>""");
@ -271,14 +271,14 @@ public class TestTypeAnnotations extends JavadocTester {
"""
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<\
span class="return-type">void</span>&nbsp;<span class="member-name">oneException\
</span>&#8203;(<span class="parameters">java.lang.String&nbsp;a)</span>
</span>&#8203;<span class="parameters">(java.lang.String&nbsp;a)</span>
throws <span class="exceptions"><a href="ThrA.html" titl\
e="annotation in typeannos">@ThrA</a> java.lang.Exception</span></div>""",
"""
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<\
span class="return-type">void</span>&nbsp;<span class="member-name">twoException\
s</span>&#8203;(<span class="parameters">java.lang.String&nbsp;a)</span>
s</span>&#8203;<span class="parameters">(java.lang.String&nbsp;a)</span>
throws <span class="exceptions"><a href="ThrA.html" tit\
le="annotation in typeannos">@ThrA</a> java.lang.RuntimeException,
<a href="ThrA.html" title="annotation in typeannos">@ThrA</a> java.lang.Exception</span></div>""");
@ -310,7 +310,7 @@ public class TestTypeAnnotations extends JavadocTester {
checkOutput("typeannos/BoundTest.html", true,
"""
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span c\
lass="member-name">wcExtends</span>&#8203;(<span class="parameters"><a href="MyL\
lass="member-name">wcExtends</span>&#8203;<span class="parameters">(<a href="MyL\
ist.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>""",
@ -324,7 +324,7 @@ public class TestTypeAnnotations extends JavadocTester {
checkOutput("typeannos/BoundWithValue.html", true,
"""
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span c\
lass="member-name">wcSuper</span>&#8203;(<span class="parameters"><a href="MyLis\
lass="member-name">wcSuper</span>&#8203;<span class="parameters">(<a href="MyLis\
t.html" title="class in typeannos">MyList</a>&lt;? super <a href="WldB.html" tit\
le="annotation in typeannos">@WldB</a>("m") java.lang.String&gt;&nbsp;l)</span><\
/div>""",
@ -368,14 +368,14 @@ public class TestTypeAnnotations extends JavadocTester {
checkOutput("typeannos/DefaultUnmodified.html", true,
"""
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span c\
lass="member-name">withException</span>&#8203;(<span class="parameters"><a href=\
lass="member-name">withException</span>&#8203;<span class="parameters">(<a href=\
"RcvrA.html" title="annotation in typeannos">@RcvrA</a>&nbsp;DefaultUnmodified&n\
bsp;this)</span>
throws <span class="exceptions">java.lang.Exception</span></div>""",
"""
<div class="member-signature"><span class="return-type">java.lang.String</span>&\
nbsp;<span class="member-name">nonVoid</span>&#8203;(<span class="parameters"><a\
nbsp;<span class="member-name">nonVoid</span>&#8203;<span class="parameters">(<a\
href="RcvrA.html" title="annotation in typeannos">@RcvrA</a> <a href="RcvrB.htm\
l" title="annotation in typeannos">@RcvrB</a>("m")&nbsp;DefaultUnmodified&nbsp;t\
his)</span></div>""",
@ -383,55 +383,55 @@ public class TestTypeAnnotations extends JavadocTester {
"""
<div class="member-signature"><span class="type-parameters">&lt;T extends java.l\
ang.Runnable&gt;</span>&nbsp;<span class="return-type">void</span>&nbsp;<span cl\
ass="member-name">accept</span>&#8203;(<span class="parameters"><a href="RcvrA.h\
ass="member-name">accept</span>&#8203;<span class="parameters">(<a href="RcvrA.h\
tml" title="annotation in typeannos">@RcvrA</a>&nbsp;DefaultUnmodified&nbsp;this\
,
T&nbsp;r)</span>
T&nbsp;r)</span>
throws <span class="exceptions">java.lang.Exception</span></div>""");
checkOutput("typeannos/PublicModified.html", true,
"""
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<\
span class="return-type">java.lang.String</span>&nbsp;<span class="member-name">\
nonVoid</span>&#8203;(<span class="parameters"><a href="RcvrA.html" title="annot\
nonVoid</span>&#8203;<span class="parameters">(<a href="RcvrA.html" title="annot\
ation in typeannos">@RcvrA</a>&nbsp;PublicModified&nbsp;this)</span></div>""",
"""
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<\
span class="type-parameters">&lt;T extends java.lang.Runnable&gt;</span>&nbsp;<s\
pan class="return-type">void</span>&nbsp;<span class="member-name">accept</span>\
&#8203;(<span class="parameters"><a href="RcvrA.html" title="annotation in typea\
&#8203;<span class="parameters">(<a href="RcvrA.html" title="annotation in typea\
nnos">@RcvrA</a>&nbsp;PublicModified&nbsp;this,
T&nbsp;r)</span>
T&nbsp;r)</span>
throws <span class="exceptions">java.lang.Exception</span></div>""");
checkOutput("typeannos/WithValue.html", true,
"""
<div class="member-signature"><span class="type-parameters">&lt;T extends java.l\
ang.Runnable&gt;</span>&nbsp;<span class="return-type">void</span>&nbsp;<span cl\
ass="member-name">accept</span>&#8203;(<span class="parameters"><a href="RcvrB.h\
ass="member-name">accept</span>&#8203;<span class="parameters">(<a href="RcvrB.h\
tml" title="annotation in typeannos">@RcvrB</a>("m")&nbsp;WithValue&nbsp;this,
T&nbsp;r)</span>
T&nbsp;r)</span>
throws <span class="exceptions">java.lang.Exception</span></div>""");
checkOutput("typeannos/WithFinal.html", true,
"""
<div class="member-signature"><span class="return-type">java.lang.String</span>&\
nbsp;<span class="member-name">nonVoid</span>&#8203;(<span class="parameters"><a\
nbsp;<span class="member-name">nonVoid</span>&#8203;<span class="parameters">(<a\
href="RcvrB.html" title="annotation in typeannos">@RcvrB</a>("m") <a href="With\
Final.html" title="class in typeannos">WithFinal</a>&nbsp;afield)</span></div>""");
checkOutput("typeannos/WithBody.html", true,
"""
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span c\
lass="member-name">field</span>&#8203;(<span class="parameters"><a href="RcvrA.h\
lass="member-name">field</span>&#8203;<span class="parameters">(<a href="RcvrA.h\
tml" title="annotation in typeannos">@RcvrA</a>&nbsp;WithBody&nbsp;this)</span><\
/div>""");
checkOutput("typeannos/Generic2.html", true,
"""
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span c\
lass="member-name">test2</span>&#8203;(<span class="parameters"><a href="RcvrA.h\
lass="member-name">test2</span>&#8203;<span class="parameters">(<a href="RcvrA.h\
tml" title="annotation in typeannos">@RcvrA</a>&nbsp;Generic2&lt;X&gt;&nbsp;this\
)</span></div>""");
@ -484,8 +484,8 @@ public class TestTypeAnnotations extends JavadocTester {
<a href="RepConstructorB.html" title="annotation in typeannos">@RepConstructorB<\
/a> <a href="RepConstructorB.html" title="annotation in typeannos">@RepConstruct\
orB</a>
</span><span class="member-name">RepeatingOnConstructor</span>&#8203;(<span class="parameters">int&nbsp;i,
int&nbsp;j)</span></div>""",
</span><span class="member-name">RepeatingOnConstructor</span>&#8203;<span class="parameters">(int&nbsp;i,
int&nbsp;j)</span></div>""",
"""
<div class="member-signature"><span class="annotations"><a href="RepAllContextsA\
@ -494,23 +494,23 @@ public class TestTypeAnnotations extends JavadocTester {
<a href="RepAllContextsB.html" title="annotation in typeannos">@RepAllContextsB<\
/a> <a href="RepAllContextsB.html" title="annotation in typeannos">@RepAllContex\
tsB</a>
</span><span class="member-name">RepeatingOnConstructor</span>&#8203;(<span class="parameters">int&nbsp;i,
int&nbsp;j,
int&nbsp;k)</span></div>""",
</span><span class="member-name">RepeatingOnConstructor</span>&#8203;<span class="parameters">(int&nbsp;i,
int&nbsp;j,
int&nbsp;k)</span></div>""",
"""
<div class="member-signature"><span class="member-name">RepeatingOnConstructor</\
span>&#8203;(<span class="parameters"><a href="RepParameterA.html" title="annota\
span>&#8203;<span class="parameters">(<a href="RepParameterA.html" title="annota\
tion in typeannos">@RepParameterA</a> <a href="RepParameterA.html" title="annota\
tion in typeannos">@RepParameterA</a> <a href="RepParameterB.html" title="annota\
tion in typeannos">@RepParameterB</a> <a href="RepParameterB.html" title="annota\
tion in typeannos">@RepParameterB</a>
java.lang.String&nbsp;parameter,
<a href="RepParameterA.html" title="annotation in typeannos">@RepParameterA</a> \
java.lang.String&nbsp;parameter,
<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>
java.lang.String <a href="RepTypeUseA.html" title="annotation in typeannos">@Rep\
java.lang.String <a href="RepTypeUseA.html" title="annotation in typeannos">@Rep\
TypeUseA</a> <a href="RepTypeUseA.html" title="annotation in typeannos">@RepType\
UseA</a> <a href="RepTypeUseB.html" title="annotation in typeannos">@RepTypeUseB\
</a> <a href="RepTypeUseB.html" title="annotation in typeannos">@RepTypeUseB</a>\
@ -521,27 +521,27 @@ public class TestTypeAnnotations extends JavadocTester {
"""
<code><span class="member-name-link"><a href="#%3Cinit%3E(java.lang.String,java.\
lang.String...)">Inner</a></span>&#8203;(java.lang.String&nbsp;parameter,
java.lang.String <a href="RepTypeUseA.html" title="annotation in typeannos">@Rep\
java.lang.String <a href="RepTypeUseA.html" title="annotation in typeannos">@Rep\
TypeUseA</a> <a href="RepTypeUseA.html" title="annotation in typeannos">@RepType\
UseA</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</span>&#8203;(<span class="parameters"><a href="RepTypeUseA.html" title="a\
Inner</span>&#8203;<span class="parameters">(<a href="RepTypeUseA.html" title="a\
nnotation in typeannos">@RepTypeUseA</a> <a href="RepTypeUseA.html" title="annot\
ation in typeannos">@RepTypeUseA</a> <a href="RepTypeUseB.html" title="annotatio\
n in typeannos">@RepTypeUseB</a> <a href="RepTypeUseB.html" title="annotation in\
typeannos">@RepTypeUseB</a>&nbsp;RepeatingOnConstructor&nbsp;this,
<a href="RepParameterA.html" title="annotation in typeannos">@RepParameterA</a> \
<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>
java.lang.String&nbsp;parameter,
<a href="RepParameterA.html" title="annotation in typeannos">@RepParameterA</a> \
java.lang.String&nbsp;parameter,
<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>
java.lang.String <a href="RepTypeUseA.html" title="annotation in typeannos">@Rep\
java.lang.String <a href="RepTypeUseA.html" title="annotation in typeannos">@Rep\
TypeUseA</a> <a href="RepTypeUseA.html" title="annotation in typeannos">@RepType\
UseA</a> <a href="RepTypeUseB.html" title="annotation in typeannos">@RepTypeUseB\
</a> <a href="RepTypeUseB.html" title="annotation in typeannos">@RepTypeUseB</a>\
@ -675,7 +675,7 @@ public class TestTypeAnnotations extends JavadocTester {
"""
<code><span class="member-name-link"><a href="#test5(java.lang.String,java.lang.\
String...)">test5</a></span>&#8203;(java.lang.String&nbsp;parameter,
java.lang.String <a href="RepTypeUseA.html" title="annotation in typeannos">@Rep\
java.lang.String <a href="RepTypeUseA.html" title="annotation in typeannos">@Rep\
TypeUseA</a> <a href="RepTypeUseA.html" title="annotation in typeannos">@RepType\
UseA</a> <a href="RepTypeUseB.html" title="annotation in typeannos">@RepTypeUseB\
</a> <a href="RepTypeUseB.html" title="annotation in typeannos">@RepTypeUseB</a>\
@ -722,22 +722,22 @@ public class TestTypeAnnotations extends JavadocTester {
pan class="member-name">test4</span>()""",
"""
java.lang.String</span>&nbsp;<span class="member-name">test5</span>&#8203;(<span\
class="parameters"><a href="RepTypeUseA.html" title="annotation in typeannos">@\
java.lang.String</span>&nbsp;<span class="member-name">test5</span>&#8203;<span\
class="parameters">(<a href="RepTypeUseA.html" title="annotation in typeannos">@\
RepTypeUseA</a> <a href="RepTypeUseA.html" title="annotation in typeannos">@RepT\
ypeUseA</a> <a href="RepTypeUseB.html" title="annotation in typeannos">@RepTypeU\
seB</a> <a href="RepTypeUseB.html" title="annotation in typeannos">@RepTypeUseB<\
/a>&nbsp;RepeatingOnMethod&nbsp;this,
<a href="RepParameterA.html" title="annotation in typeannos">@RepParameterA</a> \
<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>
java.lang.String&nbsp;parameter,
<a href="RepParameterA.html" title="annotation in typeannos">@RepParameterA</a> \
java.lang.String&nbsp;parameter,
<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>
java.lang.String <a href="RepTypeUseA.html" title="annotation in typeannos">@Rep\
java.lang.String <a href="RepTypeUseA.html" title="annotation in typeannos">@Rep\
TypeUseA</a> <a href="RepTypeUseA.html" title="annotation in typeannos">@RepType\
UseA</a> <a href="RepTypeUseB.html" title="annotation in typeannos">@RepTypeUseB\
</a> <a href="RepTypeUseB.html" title="annotation in typeannos">@RepTypeUseB</a>\
@ -764,7 +764,7 @@ public class TestTypeAnnotations extends JavadocTester {
"""
<span class="return-type">java.lang.String</span>&nbsp;<span class="member-name"\
>test</span>&#8203;(<span class="parameters"><a href="RepTypeUseA.html" title="a\
>test</span>&#8203;<span class="parameters">(<a href="RepTypeUseA.html" title="a\
nnotation in typeannos">@RepTypeUseA</a> <a href="RepTypeUseA.html" title="annot\
ation in typeannos">@RepTypeUseA</a> <a href="RepTypeUseB.html" title="annotatio\
n in typeannos">@RepTypeUseB</a> <a href="RepTypeUseB.html" title="annotation in\