67 import javax.tools.Diagnostic; |
67 import javax.tools.Diagnostic; |
68 import javax.tools.DiagnosticListener; |
68 import javax.tools.DiagnosticListener; |
69 import javax.tools.JavaFileObject; |
69 import javax.tools.JavaFileObject; |
70 import javax.tools.StandardJavaFileManager; |
70 import javax.tools.StandardJavaFileManager; |
71 |
71 |
|
72 import com.sun.source.tree.CaseTree.CaseKind; |
72 import com.sun.source.tree.CompilationUnitTree; |
73 import com.sun.source.tree.CompilationUnitTree; |
73 import com.sun.source.util.JavacTask; |
74 import com.sun.source.util.JavacTask; |
74 import com.sun.tools.javac.api.JavacTool; |
75 import com.sun.tools.javac.api.JavacTool; |
75 import com.sun.tools.javac.code.Flags; |
76 import com.sun.tools.javac.code.Flags; |
76 import com.sun.tools.javac.tree.EndPosTable; |
77 import com.sun.tools.javac.tree.EndPosTable; |
77 import com.sun.tools.javac.tree.JCTree; |
78 import com.sun.tools.javac.tree.JCTree; |
78 import com.sun.tools.javac.tree.JCTree.JCAnnotatedType; |
79 import com.sun.tools.javac.tree.JCTree.JCAnnotatedType; |
|
80 import com.sun.tools.javac.tree.JCTree.JCCase; |
79 import com.sun.tools.javac.tree.JCTree.JCCompilationUnit; |
81 import com.sun.tools.javac.tree.JCTree.JCCompilationUnit; |
80 import com.sun.tools.javac.tree.JCTree.JCNewClass; |
82 import com.sun.tools.javac.tree.JCTree.JCNewClass; |
81 import com.sun.tools.javac.tree.JCTree.JCVariableDecl; |
83 import com.sun.tools.javac.tree.JCTree.JCVariableDecl; |
82 import com.sun.tools.javac.tree.TreeInfo; |
84 import com.sun.tools.javac.tree.TreeInfo; |
83 import com.sun.tools.javac.tree.TreeScanner; |
85 import com.sun.tools.javac.tree.TreeScanner; |
438 } |
440 } |
439 } else |
441 } else |
440 super.visitVarDef(tree); |
442 super.visitVarDef(tree); |
441 } |
443 } |
442 |
444 |
|
445 @Override |
|
446 public void visitCase(JCCase tree) { |
|
447 if (tree.getCaseKind() == CaseKind.RULE) { |
|
448 scan(tree.getBody()); |
|
449 } else { |
|
450 super.visitCase(tree); |
|
451 } |
|
452 } |
|
453 |
443 boolean check(Info encl, Info self) { |
454 boolean check(Info encl, Info self) { |
444 if (excludeTags.size() > 0) { |
455 if (excludeTags.size() > 0) { |
445 if (encl != null && excludeTags.contains(getTagName(encl.tag)) |
456 if (encl != null && excludeTags.contains(getTagName(encl.tag)) |
446 || excludeTags.contains(getTagName(self.tag))) |
457 || excludeTags.contains(getTagName(self.tag))) |
447 return false; |
458 return false; |