# HG changeset patch # User jjg # Date 1368551693 25200 # Node ID c329fe11193dc6791a90052433ea51c9bfde4c60 # Parent e8ddeb9bd17ceb85e4053785087f342080c4fb6f 8011288: Erratic/inconsistent indentation of signatures Reviewed-by: darcy diff -r e8ddeb9bd17c -r c329fe11193d langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractExecutableMemberWriter.java --- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractExecutableMemberWriter.java Tue May 14 10:14:53 2013 -0700 +++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractExecutableMemberWriter.java Tue May 14 10:14:53 2013 -0700 @@ -60,17 +60,24 @@ * @param htmltree the content tree to which the parameters will be added. * @return the display length required to write this information. */ - protected int addTypeParameters(ExecutableMemberDoc member, Content htmltree) { + protected void addTypeParameters(ExecutableMemberDoc member, Content htmltree) { + Content typeParameters = getTypeParameters(member); + if (!typeParameters.isEmpty()) { + htmltree.addContent(typeParameters); + htmltree.addContent(writer.getSpace()); + } + } + + /** + * Get the type parameters for the executable member. + * + * @param member the member for which to get the type parameters. + * @return the type parameters. + */ + protected Content getTypeParameters(ExecutableMemberDoc member) { LinkInfoImpl linkInfo = new LinkInfoImpl(configuration, LinkInfoImpl.Kind.MEMBER_TYPE_PARAMS, member); - Content typeParameters = writer.getTypeParameterLinks(linkInfo); - if (linkInfo.displayLength > 0) { - Content linkContent = typeParameters; - htmltree.addContent(linkContent); - htmltree.addContent(writer.getSpace()); - writer.displayLength += linkInfo.displayLength + 1; - } - return linkInfo.displayLength; + return writer.getTypeParameterLinks(linkInfo); } /** @@ -98,8 +105,7 @@ writer.getDocLink(context, cd, (MemberDoc) emd, name, false)); Content code = HtmlTree.CODE(strong); - writer.displayLength = name.length(); - addParameters(emd, false, code); + addParameters(emd, false, code, name.length() - 1); tdSummary.addContent(code); } @@ -166,8 +172,8 @@ * @param member the member to write parameters for. * @param htmltree the content tree to which the parameters information will be added. */ - protected void addParameters(ExecutableMemberDoc member, Content htmltree) { - addParameters(member, true, htmltree); + protected void addParameters(ExecutableMemberDoc member, Content htmltree, int indentSize) { + addParameters(member, true, htmltree, indentSize); } /** @@ -178,15 +184,11 @@ * @param htmltree the content tree to which the parameters information will be added. */ protected void addParameters(ExecutableMemberDoc member, - boolean includeAnnotations, Content htmltree) { + boolean includeAnnotations, Content htmltree, int indentSize) { htmltree.addContent("("); String sep = ""; Parameter[] params = member.parameters(); - String indent = makeSpace(writer.displayLength); - if (configuration.linksource) { - //add spaces to offset indentation changes caused by link. - indent+= makeSpace(member.name().length()); - } + String indent = makeSpace(indentSize + 1); Type rcvrType = member.receiverType(); if (includeAnnotations && rcvrType instanceof AnnotatedType) { AnnotationDesc[] descList = rcvrType.asAnnotatedType().annotations(); @@ -240,21 +242,16 @@ * @param member the member to write exceptions for. * @param htmltree the content tree to which the exceptions information will be added. */ - protected void addExceptions(ExecutableMemberDoc member, Content htmltree) { + protected void addExceptions(ExecutableMemberDoc member, Content htmltree, int indentSize) { Type[] exceptions = member.thrownExceptionTypes(); - if(exceptions.length > 0) { + if (exceptions.length > 0) { LinkInfoImpl memberTypeParam = new LinkInfoImpl(configuration, LinkInfoImpl.Kind.MEMBER, member); - int retlen = getReturnTypeLength(member); - writer.getTypeParameterLinks(memberTypeParam); - retlen += memberTypeParam.displayLength == 0 ? - 0 : memberTypeParam.displayLength + 1; - String indent = makeSpace(modifierString(member).length() + - member.name().length() + retlen - 4); + String indent = makeSpace(indentSize + 1 - 7); htmltree.addContent(DocletConstants.NL); htmltree.addContent(indent); htmltree.addContent("throws "); - indent += " "; + indent = makeSpace(indentSize + 1); Content link = writer.getLink(new LinkInfoImpl(configuration, LinkInfoImpl.Kind.MEMBER, exceptions[0])); htmltree.addContent(link); @@ -269,24 +266,6 @@ } } - protected int getReturnTypeLength(ExecutableMemberDoc member) { - if (member instanceof MethodDoc) { - MethodDoc method = (MethodDoc)member; - Type rettype = method.returnType(); - if (rettype.isPrimitive()) { - return rettype.typeName().length() + - rettype.dimension().length(); - } else { - LinkInfoImpl linkInfo = new LinkInfoImpl(configuration, - LinkInfoImpl.Kind.MEMBER, rettype); - writer.getLink(linkInfo); - return linkInfo.displayLength; - } - } else { // it's a constructordoc - return -1; - } - } - protected ClassDoc implementsMethodInIntfac(MethodDoc method, ClassDoc[] intfacs) { for (int i = 0; i < intfacs.length; i++) { diff -r e8ddeb9bd17c -r c329fe11193d langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractMemberWriter.java --- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractMemberWriter.java Tue May 14 10:14:53 2013 -0700 +++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractMemberWriter.java Tue May 14 10:14:53 2013 -0700 @@ -193,14 +193,13 @@ protected abstract void addNavDetailLink(boolean link, Content liNav); /** - * Add the member name to the content tree and modifies the display length. + * 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.addContent(name); - writer.displayLength += name.length(); } /** @@ -259,7 +258,7 @@ return ""; } StringBuilder sb = new StringBuilder(len); - for(int i = 0; i < len; i++) { + for (int i = 0; i < len; i++) { sb.append(' '); } return sb.toString(); @@ -286,11 +285,14 @@ } else { if (member instanceof ExecutableMemberDoc && ((ExecutableMemberDoc) member).typeParameters().length > 0) { + Content typeParameters = ((AbstractExecutableMemberWriter) this).getTypeParameters( + (ExecutableMemberDoc) member); + code.addContent(typeParameters); //Code to avoid ugly wrapping in member summary table. - int displayLength = ((AbstractExecutableMemberWriter) this).addTypeParameters( - (ExecutableMemberDoc) member, code); - if (displayLength > 10) { + if (typeParameters.charCount() > 10) { code.addContent(new HtmlTree(HtmlTag.BR)); + } else { + code.addContent(writer.getSpace()); } code.addContent( writer.getLink(new LinkInfoImpl(configuration, diff -r e8ddeb9bd17c -r c329fe11193d langtools/src/share/classes/com/sun/tools/doclets/formats/html/ConstructorWriterImpl.java --- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/ConstructorWriterImpl.java Tue May 14 10:14:53 2013 -0700 +++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/ConstructorWriterImpl.java Tue May 14 10:14:53 2013 -0700 @@ -126,7 +126,6 @@ * {@inheritDoc} */ public Content getSignature(ConstructorDoc constructor) { - writer.displayLength = 0; Content pre = new HtmlTree(HtmlTag.PRE); writer.addAnnotationInfo(constructor, pre); addModifiers(constructor, pre); @@ -136,8 +135,9 @@ } else { addName(constructor.name(), pre); } - addParameters(constructor, pre); - addExceptions(constructor, pre); + int indent = pre.charCount(); + addParameters(constructor, pre, indent); + addExceptions(constructor, pre, indent); return pre; } diff -r e8ddeb9bd17c -r c329fe11193d langtools/src/share/classes/com/sun/tools/doclets/formats/html/HtmlDocletWriter.java --- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/HtmlDocletWriter.java Tue May 14 10:14:53 2013 -0700 +++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/HtmlDocletWriter.java Tue May 14 10:14:53 2013 -0700 @@ -75,11 +75,6 @@ public final DocPath filename; /** - * The display length used for indentation while generating the class page. - */ - public int displayLength = 0; - - /** * The global configuration information for this run. */ public final ConfigurationImpl configuration; @@ -1121,9 +1116,7 @@ */ public Content getLink(LinkInfoImpl linkInfo) { LinkFactoryImpl factory = new LinkFactoryImpl(this); - Content link = factory.getLink(linkInfo); - displayLength += linkInfo.displayLength; - return link; + return factory.getLink(linkInfo); } /** diff -r e8ddeb9bd17c -r c329fe11193d langtools/src/share/classes/com/sun/tools/doclets/formats/html/LinkFactoryImpl.java --- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/LinkFactoryImpl.java Tue May 14 10:14:53 2013 -0700 +++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/LinkFactoryImpl.java Tue May 14 10:14:53 2013 -0700 @@ -77,7 +77,6 @@ !classDoc.qualifiedTypeName().equals(classLinkInfo.type.qualifiedTypeName())) : ""; Content label = classLinkInfo.getClassLinkLabel(m_writer.configuration); - classLinkInfo.displayLength += label.charCount(); Configuration configuration = m_writer.configuration; Content link = new ContentBuilder(); if (classDoc.isIncluded()) { @@ -128,9 +127,7 @@ typeLinkInfo.excludeTypeParameterLinks = linkInfo.excludeTypeParameterLinks; typeLinkInfo.linkToSelf = linkInfo.linkToSelf; typeLinkInfo.isJava5DeclarationLocation = false; - Content output = getLink(typeLinkInfo); - ((LinkInfoImpl) linkInfo).displayLength += typeLinkInfo.displayLength; - return output; + return getLink(typeLinkInfo); } protected Content getTypeAnnotationLink(LinkInfo linkInfo, @@ -157,14 +154,12 @@ boolean isFirst = true; for (String anno : annos) { if (!isFirst) { - linkInfo.displayLength += 1; links.addContent(" "); } links.addContent(new RawHtml(anno)); isFirst = false; } if (!annos.isEmpty()) { - linkInfo.displayLength += 1; links.addContent(" "); } diff -r e8ddeb9bd17c -r c329fe11193d langtools/src/share/classes/com/sun/tools/doclets/formats/html/MethodWriterImpl.java --- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/MethodWriterImpl.java Tue May 14 10:14:53 2013 -0700 +++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/MethodWriterImpl.java Tue May 14 10:14:53 2013 -0700 @@ -117,7 +117,6 @@ * @return a content object for the signature */ public Content getSignature(MethodDoc method) { - writer.displayLength = 0; Content pre = new HtmlTree(HtmlTag.PRE); writer.addAnnotationInfo(method, pre); addModifiers(method, pre); @@ -129,8 +128,9 @@ } else { addName(method.name(), pre); } - addParameters(method, pre); - addExceptions(method, pre); + int indent = pre.charCount(); + addParameters(method, pre, indent); + addExceptions(method, pre, indent); return pre; } diff -r e8ddeb9bd17c -r c329fe11193d langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/RawHtml.java --- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/RawHtml.java Tue May 14 10:14:53 2013 -0700 +++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/RawHtml.java Tue May 14 10:14:53 2013 -0700 @@ -99,10 +99,14 @@ @Override public int charCount() { + return charCount(rawHtmlContent); + } + + static int charCount(String htmlText) { State state = State.TEXT; int count = 0; - for (int i = 0; i < rawHtmlContent.length(); i++) { - char c = rawHtmlContent.charAt(i); + for (int i = 0; i < htmlText.length(); i++) { + char c = htmlText.charAt(i); switch (state) { case TEXT: switch (c) { diff -r e8ddeb9bd17c -r c329fe11193d langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/StringContent.java --- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/StringContent.java Tue May 14 10:14:53 2013 -0700 +++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/StringContent.java Tue May 14 10:14:53 2013 -0700 @@ -41,7 +41,7 @@ * * @author Bhavesh Patel */ -public class StringContent extends Content{ +public class StringContent extends Content { private StringBuilder stringContent; @@ -92,7 +92,7 @@ } public int charCount() { - return stringContent.length(); + return RawHtml.charCount(stringContent.toString()); } /** diff -r e8ddeb9bd17c -r c329fe11193d langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/Content.java --- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/Content.java Tue May 14 10:14:53 2013 -0700 +++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/Content.java Tue May 14 10:14:53 2013 -0700 @@ -96,8 +96,13 @@ return !isEmpty(); } + /** + * Return the number of characters of plain text content in this object + * (optional operation.) + * @return the number of characters of plain text content in this + */ public int charCount() { - throw new UnsupportedOperationException(); + return 0; } /** diff -r e8ddeb9bd17c -r c329fe11193d langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/links/LinkFactory.java --- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/links/LinkFactory.java Tue May 14 10:14:53 2013 -0700 +++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/links/LinkFactory.java Tue May 14 10:14:53 2013 -0700 @@ -60,7 +60,6 @@ Content link = newContent(); if (type.isPrimitive()) { //Just a primitive. - linkInfo.displayLength += type.typeName().length(); link.addContent(type.typeName()); } else if (type.asAnnotatedType() != null && type.dimension().length() == 0) { link.addContent(getTypeAnnotationLinks(linkInfo)); @@ -70,19 +69,16 @@ } else if (type.asWildcardType() != null) { //Wildcard type. linkInfo.isTypeBound = true; - linkInfo.displayLength += 1; link.addContent("?"); WildcardType wildcardType = type.asWildcardType(); Type[] extendsBounds = wildcardType.extendsBounds(); for (int i = 0; i < extendsBounds.length; i++) { - linkInfo.displayLength += i > 0 ? 2 : 9; link.addContent(i > 0 ? ", " : " extends "); setBoundsLinkInfo(linkInfo, extendsBounds[i]); link.addContent(getLink(linkInfo)); } Type[] superBounds = wildcardType.superBounds(); for (int i = 0; i < superBounds.length; i++) { - linkInfo.displayLength += i > 0 ? 2 : 7; link.addContent(i > 0 ? ", " : " super "); setBoundsLinkInfo(linkInfo, superBounds[i]); link.addContent(getLink(linkInfo)); @@ -101,7 +97,6 @@ link.addContent(getClassLink(linkInfo)); } else { //No need to link method type parameters. - linkInfo.displayLength += type.typeName().length(); link.addContent(type.typeName()); } @@ -109,7 +104,6 @@ if (! linkInfo.excludeTypeBounds) { linkInfo.excludeTypeBounds = true; for (int i = 0; i < bounds.length; i++) { - linkInfo.displayLength += i > 0 ? 2 : 9; link.addContent(i > 0 ? " & " : " extends "); setBoundsLinkInfo(linkInfo, bounds[i]); link.addContent(getLink(linkInfo)); @@ -121,7 +115,6 @@ linkInfo.excludeTypeBoundsLinks) { //Since we are excluding type parameter links, we should not //be linking to the type bound. - linkInfo.displayLength += type.typeName().length(); link.addContent(type.typeName()); link.addContent(getTypeParameterLinks(linkInfo)); return link; @@ -139,14 +132,11 @@ if (type.dimension().length() > 2) { //Javadoc returns var args as array. //Strip out the first [] from the var arg. - linkInfo.displayLength += type.dimension().length()-2; link.addContent(type.dimension().substring(2)); } - linkInfo.displayLength += 3; link.addContent("..."); } else { while (type != null && type.dimension().length() > 0) { - linkInfo.displayLength += type.dimension().length(); if (type.asAnnotatedType() != null) { linkInfo.type = type; link.addContent(" "); @@ -241,16 +231,13 @@ (linkInfo.includeTypeAsSepLink && ! isClassLabel) ) && vars.length > 0) { - linkInfo.displayLength += 1; links.addContent("<"); for (int i = 0; i < vars.length; i++) { if (i > 0) { - linkInfo.displayLength += 1; links.addContent(","); } links.addContent(getTypeParameterLink(linkInfo, vars[i])); } - linkInfo.displayLength += 1; links.addContent(">"); } return links; @@ -263,13 +250,11 @@ AnnotationDesc[] annotations = linkInfo.type.asAnnotatedType().annotations(); for (int i = 0; i < annotations.length; i++) { if (i > 0) { - linkInfo.displayLength += 1; links.addContent(" "); } links.addContent(getTypeAnnotationLink(linkInfo, annotations[i])); } - linkInfo.displayLength += 1; links.addContent(" "); return links; } diff -r e8ddeb9bd17c -r c329fe11193d langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/links/LinkInfo.java --- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/links/LinkInfo.java Tue May 14 10:14:53 2013 -0700 +++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/links/LinkInfo.java Tue May 14 10:14:53 2013 -0700 @@ -91,7 +91,7 @@ public boolean includeTypeInClassLinkLabel = true; /** - * True if we should include the type as seperate link. False otherwise. + * True if we should include the type as separate link. False otherwise. */ public boolean includeTypeAsSepLink = false; @@ -117,11 +117,6 @@ public boolean linkToSelf = true; /** - * The display length for the link. - */ - public int displayLength = 0; - - /** * Return an empty instance of a content object. * * @return an empty instance of a content object. diff -r e8ddeb9bd17c -r c329fe11193d langtools/test/com/sun/javadoc/testIndentation/TestIndentation.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/com/sun/javadoc/testIndentation/TestIndentation.java Tue May 14 10:14:53 2013 -0700 @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2013, 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 8011288 + * @summary Erratic/inconsistent indentation of signatures + * @library ../lib/ + * @build JavadocTester + * @run main TestIndentation + */ + +public class TestIndentation extends JavadocTester { + + //Test information. + private static final String BUG_ID = "8011288"; + + //Javadoc arguments. + private static final String[] ARGS = new String[] { + "-d", BUG_ID, "-sourcepath", SRC_DIR, "p" + }; + + //Input for string search tests. + private static final String[][] TEST = { + { BUG_ID + FS + "p" + FS + "Indent.html", + "
public <T> void m(T t1," },
+        { BUG_ID + FS + "p" + FS + "Indent.html",
+          NL + "                  T t2)" },
+        { BUG_ID + FS + "p" + FS + "Indent.html",
+          NL + "           throws java.lang.Exception" }
+    };
+    private static final String[][] NEGATED_TEST = NO_TEST;
+
+    /**
+     * The entry point of the test.
+     * @param args the array of command line arguments.
+     */
+    public static void main(String[] args) {
+        TestIndentation tester = new TestIndentation();
+        run(tester, ARGS, TEST, NEGATED_TEST);
+        tester.printSummary();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public String getBugId() {
+        return BUG_ID;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public String getBugName() {
+        return getClass().getName();
+    }
+}
diff -r e8ddeb9bd17c -r c329fe11193d langtools/test/com/sun/javadoc/testIndentation/p/Indent.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/com/sun/javadoc/testIndentation/p/Indent.java	Tue May 14 10:14:53 2013 -0700
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2013, 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 p;
+
+public class Indent {
+    public  void m(T t1, T t2) throws Exception { }
+}
diff -r e8ddeb9bd17c -r c329fe11193d langtools/test/com/sun/javadoc/testNewLanguageFeatures/TestNewLanguageFeatures.java
--- a/langtools/test/com/sun/javadoc/testNewLanguageFeatures/TestNewLanguageFeatures.java	Tue May 14 10:14:53 2013 -0700
+++ b/langtools/test/com/sun/javadoc/testNewLanguageFeatures/TestNewLanguageFeatures.java	Tue May 14 10:14:53 2013 -0700
@@ -235,8 +235,8 @@
                 "@AnnotationType(" +
                 "optional=\"Parameter Annotation\",required=1994)" + NL +
-                "                    int documented," + NL +
-                "                    int undocmented)
"}, + " int documented," + NL + + " int undocmented)"}, //CONSTRUCTOR PARAMS {BUG_ID + FS + "pkg" + FS + "AnnotationTypeUsage.html", @@ -245,8 +245,8 @@ "@AnnotationType(" + "optional=\"Constructor Param Annotation\",required=1994)" + NL + - " int documented," + NL + - " int undocmented)"}, + " int documented," + NL + + " int undocmented)"}, //================================= // ANNOTATION TYPE USAGE TESTING (All Different Types). @@ -443,7 +443,7 @@ "<T extends ParamTest" + "<Foo3>> 
Foo3>>
ParamTest" + "<Foo3>
" @@ -486,7 +486,7 @@ "<T extends ParamTest<" + "Foo3" + - ">> 
>>
ParamTest<Foo3>
" }, @@ -524,7 +524,7 @@ "../pkg2/ParamTest2.html\" title=\"class in pkg2\">" + "ParamTest2<java.util.List<? extends Foo4>" + - ">> 
ParamTest2<java.util.List" + "<? extends Foo4>>" @@ -569,7 +569,7 @@ "../pkg2/ParamTest2.html\" title=\"class in pkg2\">" + "ParamTest2<java.util.List<? extends Foo4>" + - ">> 
ParamTest2<java.util.List" + "<? extends Foo4>>" diff -r e8ddeb9bd17c -r c329fe11193d langtools/test/com/sun/javadoc/testTypeAnnotations/TestTypeAnnotations.java --- a/langtools/test/com/sun/javadoc/testTypeAnnotations/TestTypeAnnotations.java Tue May 14 10:14:53 2013 -0700 +++ b/langtools/test/com/sun/javadoc/testTypeAnnotations/TestTypeAnnotations.java Tue May 14 10:14:53 2013 -0700 @@ -266,14 +266,14 @@ // Test for type annotations on throws (Throws.java). {BUG_ID + FS + "typeannos" + FS + "ThrDefaultUnmodified.html", "
void oneException()" + NL +
-            "            throws @ThrA java.lang.Exception
" }, {BUG_ID + FS + "typeannos" + FS + "ThrDefaultUnmodified.html", "
void twoExceptions()" + NL +
-            "             throws @ThrA java.lang.RuntimeException," + NL +
-            "                    @ThrA java.lang.Exception
" }, {BUG_ID + FS + "typeannos" + FS + "ThrPublicModified.html", @@ -290,16 +290,16 @@ }, {BUG_ID + FS + "typeannos" + FS + "ThrWithValue.html", "
void oneException()" + NL +
-            "            throws @ThrB(value=\"m\") java.lang.Exception
" }, {BUG_ID + FS + "typeannos" + FS + "ThrWithValue.html", "
void twoExceptions()" + NL +
-            "             throws @ThrB(value=\"m\") java.lang.RuntimeException," + NL +
-            "                    @ThrA java.lang.Exception
" }, @@ -342,7 +342,7 @@ {BUG_ID + FS + "typeannos" + FS + "DefaultUnmodified.html", "
void withException(@RcvrA " +
-            "DefaultUnmodified this)" + NL + "             throws java." +
+            "DefaultUnmodified this)" + NL + "            throws java." +
             "lang.Exception
" }, {BUG_ID + FS + "typeannos" + FS + "DefaultUnmodified.html", @@ -356,8 +356,8 @@ "
<T extends java.lang.Runnable> void accept(" +
             "@RcvrA DefaultUnmodified this," + NL +
-            "                                         T r)" + NL +
-            "      throws java.lang.Exception
" + " T r)" + NL + + " throws java.lang.Exception" }, {BUG_ID + FS + "typeannos" + FS + "PublicModified.html", "
public final java.lang.String nonVoid(public final <T extends java.lang.Runnable> " +
             "void accept(@RcvrA PublicModified this," + NL +
-            "                                         T r)" + NL +
-            "                  throws java.lang.Exception
" + " T r)" + NL + + " throws java.lang.Exception" }, {BUG_ID + FS + "typeannos" + FS + "WithValue.html", "
<T extends java.lang.Runnable> void accept(" +
             "@RcvrB(" +
             "value=\"m\") WithValue this," + NL +
-            "                                         T r)" + NL +
-            "      throws java.lang.Exception
" + " T r)" + NL + + " throws java.lang.Exception" }, {BUG_ID + FS + "typeannos" + FS + "WithFinal.html", "
java.lang.String nonVoid(<W extends java.lang.String,V extends " +
-            "java.util.List> 
java.lang.Object
" + "java.util.List>
java.lang.Object" }, {BUG_ID + FS + "pkg" + FS + "C.html", "<T> java.lang.Object"