src/share/classes/com/sun/tools/doclint/Checker.java

changeset 1650
74d7f9bcac93
parent 1552
153d20d0cac5
child 1668
991f11e13598
     1.1 --- a/src/share/classes/com/sun/tools/doclint/Checker.java	Tue Mar 19 17:05:57 2013 -0700
     1.2 +++ b/src/share/classes/com/sun/tools/doclint/Checker.java	Tue Mar 19 19:16:59 2013 -0700
     1.3 @@ -25,20 +25,18 @@
     1.4  
     1.5  package com.sun.tools.doclint;
     1.6  
     1.7 -import com.sun.source.doctree.LiteralTree;
     1.8 -import java.util.regex.Matcher;
     1.9 -import com.sun.source.doctree.LinkTree;
    1.10 +import java.io.IOException;
    1.11 +import java.io.StringWriter;
    1.12  import java.net.URI;
    1.13 -import java.util.regex.Pattern;
    1.14 -import java.io.IOException;
    1.15 -import com.sun.tools.javac.tree.DocPretty;
    1.16 -import java.io.StringWriter;
    1.17 +import java.net.URISyntaxException;
    1.18  import java.util.Deque;
    1.19  import java.util.EnumSet;
    1.20  import java.util.HashSet;
    1.21  import java.util.LinkedList;
    1.22  import java.util.List;
    1.23  import java.util.Set;
    1.24 +import java.util.regex.Matcher;
    1.25 +import java.util.regex.Pattern;
    1.26  
    1.27  import javax.lang.model.element.Element;
    1.28  import javax.lang.model.element.ElementKind;
    1.29 @@ -52,12 +50,15 @@
    1.30  import com.sun.source.doctree.AttributeTree;
    1.31  import com.sun.source.doctree.AuthorTree;
    1.32  import com.sun.source.doctree.DocCommentTree;
    1.33 +import com.sun.source.doctree.DocRootTree;
    1.34  import com.sun.source.doctree.DocTree;
    1.35  import com.sun.source.doctree.EndElementTree;
    1.36  import com.sun.source.doctree.EntityTree;
    1.37  import com.sun.source.doctree.ErroneousTree;
    1.38  import com.sun.source.doctree.IdentifierTree;
    1.39  import com.sun.source.doctree.InheritDocTree;
    1.40 +import com.sun.source.doctree.LinkTree;
    1.41 +import com.sun.source.doctree.LiteralTree;
    1.42  import com.sun.source.doctree.ParamTree;
    1.43  import com.sun.source.doctree.ReferenceTree;
    1.44  import com.sun.source.doctree.ReturnTree;
    1.45 @@ -67,11 +68,12 @@
    1.46  import com.sun.source.doctree.StartElementTree;
    1.47  import com.sun.source.doctree.TextTree;
    1.48  import com.sun.source.doctree.ThrowsTree;
    1.49 +import com.sun.source.doctree.ValueTree;
    1.50  import com.sun.source.doctree.VersionTree;
    1.51  import com.sun.source.util.DocTreeScanner;
    1.52  import com.sun.source.util.TreePath;
    1.53  import com.sun.tools.doclint.HtmlTag.AttrKind;
    1.54 -import java.net.URISyntaxException;
    1.55 +import com.sun.tools.javac.tree.DocPretty;
    1.56  import static com.sun.tools.doclint.Messages.Group.*;
    1.57  
    1.58  
    1.59 @@ -95,6 +97,7 @@
    1.60      public enum Flag {
    1.61          TABLE_HAS_CAPTION,
    1.62          HAS_ELEMENT,
    1.63 +        HAS_INLINE_TAG,
    1.64          HAS_TEXT,
    1.65          REPORTED_BAD_INLINE
    1.66      }
    1.67 @@ -418,7 +421,8 @@
    1.68                      }
    1.69                      if (t.flags.contains(HtmlTag.Flag.EXPECT_CONTENT)
    1.70                              && !top.flags.contains(Flag.HAS_TEXT)
    1.71 -                            && !top.flags.contains(Flag.HAS_ELEMENT)) {
    1.72 +                            && !top.flags.contains(Flag.HAS_ELEMENT)
    1.73 +                            && !top.flags.contains(Flag.HAS_INLINE_TAG)) {
    1.74                          env.messages.warning(HTML, tree, "dc.tag.empty", treeName);
    1.75                      }
    1.76                      tagStack.pop();
    1.77 @@ -571,7 +575,14 @@
    1.78      }
    1.79  
    1.80      @Override
    1.81 +    public Void visitDocRoot(DocRootTree tree, Void ignore) {
    1.82 +        markEnclosingTag(Flag.HAS_INLINE_TAG);
    1.83 +        return super.visitDocRoot(tree, ignore);
    1.84 +    }
    1.85 +
    1.86 +    @Override
    1.87      public Void visitInheritDoc(InheritDocTree tree, Void ignore) {
    1.88 +        markEnclosingTag(Flag.HAS_INLINE_TAG);
    1.89          // TODO: verify on overridden method
    1.90          foundInheritDoc = true;
    1.91          return super.visitInheritDoc(tree, ignore);
    1.92 @@ -579,6 +590,7 @@
    1.93  
    1.94      @Override
    1.95      public Void visitLink(LinkTree tree, Void ignore) {
    1.96 +        markEnclosingTag(Flag.HAS_INLINE_TAG);
    1.97          // simulate inline context on tag stack
    1.98          HtmlTag t = (tree.getKind() == DocTree.Kind.LINK)
    1.99                  ? HtmlTag.CODE : HtmlTag.SPAN;
   1.100 @@ -592,6 +604,7 @@
   1.101  
   1.102      @Override
   1.103      public Void visitLiteral(LiteralTree tree, Void ignore) {
   1.104 +        markEnclosingTag(Flag.HAS_INLINE_TAG);
   1.105          if (tree.getKind() == DocTree.Kind.CODE) {
   1.106              for (TagStackItem tsi: tagStack) {
   1.107                  if (tsi.tag == HtmlTag.CODE) {
   1.108 @@ -746,6 +759,12 @@
   1.109      }
   1.110  
   1.111      @Override
   1.112 +    public Void visitValue(ValueTree tree, Void ignore) {
   1.113 +        markEnclosingTag(Flag.HAS_INLINE_TAG);
   1.114 +        return super.visitValue(tree, ignore);
   1.115 +    }
   1.116 +
   1.117 +    @Override
   1.118      public Void visitVersion(VersionTree tree, Void ignore) {
   1.119          warnIfEmpty(tree, tree.getBody());
   1.120          return super.visitVersion(tree, ignore);

mercurial