# HG changeset patch # User ksrini # Date 1312598465 25200 # Node ID e9f118c2bd3c4690d8d2e6b108b5bad7e226634c # Parent c0d5f93af0483f9457a950fe1d637350adae4b43 7064544: (javadoc) miscellaneous fixes requested by netbeans Summary: Contributed by netbeans team, modified to suit by the langtools team. Reviewed-by: jjg, bpatel diff -r c0d5f93af048 -r e9f118c2bd3c src/share/classes/com/sun/tools/javadoc/ClassDocImpl.java --- a/src/share/classes/com/sun/tools/javadoc/ClassDocImpl.java Fri Aug 05 15:57:59 2011 -0700 +++ b/src/share/classes/com/sun/tools/javadoc/ClassDocImpl.java Fri Aug 05 19:41:05 2011 -0700 @@ -744,17 +744,16 @@ // search inner classes //### Add private entry point to avoid creating array? //### Replicate code in innerClasses here to avoid consing? - ClassDoc innerClasses[] = innerClasses(); - for (int i = 0; i < innerClasses.length; i++) { - if (innerClasses[i].name().equals(className) || - //### This is from original javadoc but it looks suspicious to me... - //### I believe it is attempting to compensate for the confused - //### convention of including the nested class qualifiers in the - //### 'name' of the inner class, rather than the true simple name. - innerClasses[i].name().endsWith(className)) { - return innerClasses[i]; + for (ClassDoc icd : innerClasses()) { + if (icd.name().equals(className) || + //### This is from original javadoc but it looks suspicious to me... + //### I believe it is attempting to compensate for the confused + //### convention of including the nested class qualifiers in the + //### 'name' of the inner class, rather than the true simple name. + icd.name().endsWith("." + className)) { + return icd; } else { - ClassDoc innercd = ((ClassDocImpl) innerClasses[i]).searchClass(className); + ClassDoc innercd = ((ClassDocImpl) icd).searchClass(className); if (innercd != null) { return innercd; } diff -r c0d5f93af048 -r e9f118c2bd3c src/share/classes/com/sun/tools/javadoc/Comment.java --- a/src/share/classes/com/sun/tools/javadoc/Comment.java Fri Aug 05 15:57:59 2011 -0700 +++ b/src/share/classes/com/sun/tools/javadoc/Comment.java Fri Aug 05 19:41:05 2011 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -25,10 +25,7 @@ package com.sun.tools.javadoc; -import java.util.Locale; - import com.sun.javadoc.*; - import com.sun.tools.javac.util.ListBuffer; /** @@ -115,7 +112,7 @@ state = TAG_NAME; } break; - }; + } if (ch == '\n') { newLine = true; } else if (!isWhite) { @@ -134,7 +131,7 @@ case IN_TEXT: parseCommentComponent(tagName, textStart, lastNonWhite+1); break; - }; + } } /** @@ -396,16 +393,15 @@ * else * return -1. */ - private static int inlineTagFound(DocImpl holder, String inlinetext, int start) { + private static int inlineTagFound(DocImpl holder, String inlinetext, int start) { DocEnv docenv = holder.env; - int linkstart; - if (start == inlinetext.length() || - (linkstart = inlinetext.indexOf("{@", start)) == -1) { + int linkstart = inlinetext.indexOf("{@", start); + if (start == inlinetext.length() || linkstart == -1) { return -1; - } else if(inlinetext.indexOf('}', start) == -1) { + } else if (inlinetext.indexOf('}', linkstart) == -1) { //Missing '}'. docenv.warning(holder, "tag.Improper_Use_Of_Link_Tag", - inlinetext.substring(linkstart, inlinetext.length())); + inlinetext.substring(linkstart, inlinetext.length())); return -1; } else { return linkstart; @@ -425,6 +421,7 @@ /** * Return text for this Doc comment. */ + @Override public String toString() { return text; } diff -r c0d5f93af048 -r e9f118c2bd3c src/share/classes/com/sun/tools/javadoc/JavadocEnter.java --- a/src/share/classes/com/sun/tools/javadoc/JavadocEnter.java Fri Aug 05 15:57:59 2011 -0700 +++ b/src/share/classes/com/sun/tools/javadoc/JavadocEnter.java Fri Aug 05 19:41:05 2011 -0700 @@ -31,7 +31,6 @@ import com.sun.tools.javac.code.Kinds; import com.sun.tools.javac.code.Symbol.*; import com.sun.tools.javac.comp.Enter; -import com.sun.tools.javac.tree.JCTree; import com.sun.tools.javac.tree.JCTree.*; import javax.tools.JavaFileObject; @@ -65,6 +64,7 @@ final Messager messager; final DocEnv docenv; + @Override public void main(List trees) { // count all Enter errors as warnings. int nerrors = messager.nerrors; @@ -73,6 +73,7 @@ messager.nerrors = nerrors; } + @Override public void visitTopLevel(JCCompilationUnit tree) { super.visitTopLevel(tree); if (tree.sourcefile.isNameCompatible("package-info", JavaFileObject.Kind.SOURCE)) { @@ -81,10 +82,11 @@ } } + @Override public void visitClassDef(JCClassDecl tree) { super.visitClassDef(tree); - if (tree.sym != null && tree.sym.kind == Kinds.TYP) { - if (tree.sym == null) return; + if (tree.sym == null) return; + if (tree.sym.kind == Kinds.TYP || tree.sym.kind == Kinds.ERR) { String comment = env.toplevel.docComments.get(tree); ClassSymbol c = tree.sym; docenv.makeClassDoc(c, comment, tree, env.toplevel.lineMap); @@ -92,6 +94,7 @@ } /** Don't complain about a duplicate class. */ + @Override protected void duplicateClass(DiagnosticPosition pos, ClassSymbol c) {} } diff -r c0d5f93af048 -r e9f118c2bd3c test/com/sun/javadoc/testLinkTaglet/TestLinkTaglet.java --- a/test/com/sun/javadoc/testLinkTaglet/TestLinkTaglet.java Fri Aug 05 15:57:59 2011 -0700 +++ b/test/com/sun/javadoc/testLinkTaglet/TestLinkTaglet.java Fri Aug 05 19:41:05 2011 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2004, 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 @@ -23,9 +23,9 @@ /* * @test - * @bug 4732864 6280605 + * @bug 4732864 6280605 7064544 * @summary Make sure that you can link from one member to another using - * non-qualified name. + * non-qualified name, furthermore, ensure the right one is linked. * @author jamieh * @library ../lib/ * @build JavadocTester @@ -36,7 +36,7 @@ public class TestLinkTaglet extends JavadocTester { //Test information. - private static final String BUG_ID = "4732864-6280605"; + private static final String BUG_ID = "4732864-6280605-7064544"; //Javadoc arguments. private static final String[] ARGS = new String[] { diff -r c0d5f93af048 -r e9f118c2bd3c test/com/sun/javadoc/testLinkTaglet/pkg/C.java --- a/test/com/sun/javadoc/testLinkTaglet/pkg/C.java Fri Aug 05 15:57:59 2011 -0700 +++ b/test/com/sun/javadoc/testLinkTaglet/pkg/C.java Fri Aug 05 19:41:05 2011 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2004, 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 @@ -34,6 +34,11 @@ public class C { public InnerC MEMBER = new InnerC(); + /** + * A red herring inner class to confuse the matching, thus to + * ensure the right one is linked. + */ + public class RedHerringInnerC {} /** * Link to member in outer class: {@link #MEMBER}