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

changeset 1499
6b6311a8c9cc
parent 1495
bc1023e0e533
child 1502
916143318f10
     1.1 --- a/src/share/classes/com/sun/tools/doclint/Checker.java	Wed Jan 16 17:40:28 2013 +0000
     1.2 +++ b/src/share/classes/com/sun/tools/doclint/Checker.java	Wed Jan 16 10:29:52 2013 -0800
     1.3 @@ -25,6 +25,7 @@
     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.net.URI;
    1.11 @@ -359,9 +360,8 @@
    1.12              env.messages.error(HTML, tree, "dc.tag.unknown", treeName);
    1.13          } else if (t.endKind == HtmlTag.EndKind.NONE) {
    1.14              env.messages.error(HTML, tree, "dc.tag.end.not.permitted", treeName);
    1.15 -        } else if (tagStack.isEmpty()) {
    1.16 -            env.messages.error(HTML, tree, "dc.tag.end.unexpected", treeName);
    1.17          } else {
    1.18 +            boolean done = false;
    1.19              while (!tagStack.isEmpty()) {
    1.20                  TagStackItem top = tagStack.peek();
    1.21                  if (t == top.tag) {
    1.22 @@ -383,6 +383,7 @@
    1.23                          env.messages.error(HTML, tree, "dc.text.not.allowed", treeName);
    1.24                      }
    1.25                      tagStack.pop();
    1.26 +                    done = true;
    1.27                      break;
    1.28                  } else if (top.tag == null || top.tag.endKind != HtmlTag.EndKind.REQUIRED) {
    1.29                      tagStack.pop();
    1.30 @@ -400,10 +401,15 @@
    1.31                          tagStack.pop();
    1.32                      } else {
    1.33                          env.messages.error(HTML, tree, "dc.tag.end.unexpected", treeName);
    1.34 +                        done = true;
    1.35                          break;
    1.36                      }
    1.37                  }
    1.38              }
    1.39 +
    1.40 +            if (!done && tagStack.isEmpty()) {
    1.41 +                env.messages.error(HTML, tree, "dc.tag.end.unexpected", treeName);
    1.42 +            }
    1.43          }
    1.44  
    1.45          return super.visitEndElement(tree, ignore);
    1.46 @@ -546,6 +552,19 @@
    1.47      }
    1.48  
    1.49      @Override
    1.50 +    public Void visitLiteral(LiteralTree tree, Void ignore) {
    1.51 +        if (tree.getKind() == DocTree.Kind.CODE) {
    1.52 +            for (TagStackItem tsi: tagStack) {
    1.53 +                if (tsi.tag == HtmlTag.CODE) {
    1.54 +                    env.messages.warning(HTML, tree, "dc.tag.nested.not.allowed", "code");
    1.55 +                    break;
    1.56 +                }
    1.57 +            }
    1.58 +        }
    1.59 +        return super.visitLiteral(tree, ignore);
    1.60 +    }
    1.61 +
    1.62 +    @Override
    1.63      public Void visitParam(ParamTree tree, Void ignore) {
    1.64          boolean typaram = tree.isTypeParameter();
    1.65          IdentifierTree nameTree = tree.getName();

mercurial