Mercurial > hg > release > icedtea7-forest-2.0 > langtools
changeset 1054:145d832616d3
Merge
author | asaha |
---|---|
date | Thu, 05 May 2011 22:30:15 -0700 |
parents | 219b522d09e4 (diff) 4c41a371aaf4 (current diff) |
children | 8b6e015ae7d0 |
files | |
diffstat | 5 files changed, 149 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/classes/com/sun/tools/doclets/formats/html/HtmlDocletWriter.java Thu May 05 14:02:30 2011 -0700 +++ b/src/share/classes/com/sun/tools/doclets/formats/html/HtmlDocletWriter.java Thu May 05 22:30:15 2011 -0700 @@ -2120,7 +2120,7 @@ } } text = (isplaintext) ? - refMemName : getCode() + refMemName + getCodeEnd(); + refMemName : getCode() + Util.escapeHtmlChars(refMemName) + getCodeEnd(); result.append(getDocLink(LinkInfoImpl.CONTEXT_SEE_TAG, containing, refMem, (label.length() == 0)? text: label, false));
--- a/src/share/classes/com/sun/tools/javac/code/Scope.java Thu May 05 14:02:30 2011 -0700 +++ b/src/share/classes/com/sun/tools/javac/code/Scope.java Thu May 05 22:30:15 2011 -0700 @@ -649,7 +649,7 @@ public Iterator<Symbol> iterator() { return new CompoundScopeIterator(subScopes) { Iterator<Symbol> nextIterator(Scope s) { - return s.getElements().iterator(); + return s.getElements(sf).iterator(); } }; }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/com/sun/javadoc/testNestedGenerics/TestNestedGenerics.java Thu May 05 22:30:15 2011 -0700 @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2011, 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 6758050 + * @summary Test HTML output for nested generic types. + * @author bpatel + * @library ../lib/ + * @build JavadocTester TestNestedGenerics + * @run main TestNestedGenerics + */ + +public class TestNestedGenerics extends JavadocTester { + + //Test information. + private static final String BUG_ID = "6758050"; + + //Javadoc arguments. + private static final String[] ARGS = new String[]{ + "-d", BUG_ID, "-source", "1.5", "-sourcepath", SRC_DIR, + "pkg" + }; + + //Input for string search tests. + private static final String[][] TEST = { + {BUG_ID + FS + "pkg" + FS + "NestedGenerics.html", + "<div class=\"block\">Contains <a " + + "href=\"../pkg/NestedGenerics.html#foo(java.util.Map)\"><code>foo" + + "(java.util.Map<A, java.util.Map<A, A>>)</code></a></div>" + } + }; + 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) { + TestNestedGenerics tester = new TestNestedGenerics(); + run(tester, ARGS, TEST, NEGATED_TEST); + tester.printSummary(); + } + + /** + * {@inheritDoc} + */ + public String getBugId() { + return BUG_ID; + } + + /** + * {@inheritDoc} + */ + public String getBugName() { + return getClass().getName(); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/com/sun/javadoc/testNestedGenerics/pkg/NestedGenerics.java Thu May 05 22:30:15 2011 -0700 @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2011, 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 java.util.Map; + +/** Contains {@link #foo} */ +public class NestedGenerics { + public static <A> void foo(Map<A, Map<A, A>> map) {} +}
--- a/test/tools/javac/scope/7017664/CompoundScopeTest.java Thu May 05 14:02:30 2011 -0700 +++ b/test/tools/javac/scope/7017664/CompoundScopeTest.java Thu May 05 22:30:15 2011 -0700 @@ -23,7 +23,7 @@ /* * @test - * @bug 7017664 + * @bug 7017664 7036906 * @summary Basher for CompoundScopes */ @@ -127,8 +127,17 @@ } } log("testing scope: " + root); - checkElems(root); - checkShadowed(root); + checkElems(root, null); + checkElems(root, new OddFilter()); + checkShadowed(root, null); + checkShadowed(root, new OddFilter()); + } + } + + class OddFilter implements Filter<Symbol> { + public boolean accepts(Symbol s) { + Name numPart = s.name.subName(1, s.name.length()); + return Integer.parseInt(numPart.toString()) % 2 != 0; } } @@ -165,15 +174,20 @@ * Check that CompoundScope.getElements() correctly visits all symbols * in all subscopes (in the correct order) */ - void checkElems(CompoundScope cs) { - List<Symbol> allSymbols = elems; + void checkElems(CompoundScope cs, Filter<Symbol> sf) { int count = 0; - for (Symbol s : cs.getElements()) { + ListBuffer<Symbol> found = ListBuffer.lb(); + List<Symbol> allSymbols = sf == null ? + elems : + filter(elems, sf); + int expectedCount = allSymbols.length(); + for (Symbol s : sf == null ? cs.getElements() : cs.getElements(sf)) { checkSameSymbols(s, allSymbols.head); allSymbols = allSymbols.tail; + found.append(s); count++; } - if (count != elems.size()) { + if (count != expectedCount) { error("CompoundScope.getElements() did not returned enough symbols"); } } @@ -182,22 +196,35 @@ * Check that CompoundScope.getElements() correctly visits all symbols * with a given name in all subscopes (in the correct order) */ - void checkShadowed(CompoundScope cs) { + void checkShadowed(CompoundScope cs, Filter<Symbol> sf) { for (Map.Entry<Name, List<Symbol>> shadowedEntry : shadowedMap.entrySet()) { int count = 0; - List<Symbol> shadowed = shadowedEntry.getValue(); + List<Symbol> shadowed = sf == null ? + shadowedEntry.getValue() : + filter(shadowedEntry.getValue(), sf); + int expectedCount = shadowed.length(); Name name = shadowedEntry.getKey(); - for (Symbol s : cs.getElementsByName(name)) { + for (Symbol s : sf == null ? cs.getElementsByName(name) : cs.getElementsByName(name, sf)) { checkSameSymbols(s, shadowed.head); shadowed = shadowed.tail; count++; } - if (count != shadowedEntry.getValue().size()) { + if (count != expectedCount) { error("CompoundScope.lookup() did not returned enough symbols for name " + name); } } } + List<Symbol> filter(List<Symbol> elems, Filter<Symbol> sf) { + ListBuffer<Symbol> res = ListBuffer.lb(); + for (Symbol s : elems) { + if (sf.accepts(s)) { + res.append(s); + } + } + return res.toList(); + } + void checkSameSymbols(Symbol found, Symbol req) { if (found != req) { error("Symbol mismatch - found : " + found + ":" + found.hashCode() + "\n" +