View Javadoc

1   /* Generated By:JJTree: Do not edit this line. ASTVariableDeclaratorId.java */
2   
3   package net.sourceforge.pmd.ast;
4   
5   import net.sourceforge.pmd.symboltable.NameOccurrence;
6   import net.sourceforge.pmd.symboltable.VariableNameDeclaration;
7   
8   import java.util.List;
9   
10  public class ASTVariableDeclaratorId extends SimpleJavaTypeNode {
11  
12      public ASTVariableDeclaratorId(int id) {
13          super(id);
14      }
15  
16      public ASTVariableDeclaratorId(JavaParser p, int id) {
17          super(p, id);
18      }
19  
20      /**
21       * Accept the visitor. *
22       */
23      public Object jjtAccept(JavaParserVisitor visitor, Object data) {
24          return visitor.visit(this, data);
25      }
26  
27      private int arrayDepth;
28      private VariableNameDeclaration nameDeclaration;
29  
30      public VariableNameDeclaration getNameDeclaration() {
31          return nameDeclaration;
32      }
33  
34      public void setNameDeclaration(VariableNameDeclaration decl) {
35          nameDeclaration = decl;
36      }
37  
38      public List<NameOccurrence> getUsages() {
39          return getScope().getVariableDeclarations().get(nameDeclaration);
40      }
41  
42      public void bumpArrayDepth() {
43          arrayDepth++;
44      }
45  
46      public int getArrayDepth() {
47          return arrayDepth;
48      }
49  
50      public boolean isArray() {
51          return arrayDepth > 0;
52      }
53  
54      public boolean isExceptionBlockParameter() {
55          return jjtGetParent().jjtGetParent() instanceof ASTTryStatement;
56      }
57  
58      public SimpleNode getTypeNameNode() {
59          if (jjtGetParent() instanceof ASTFormalParameter) {
60              return findTypeNameNode(jjtGetParent());
61          } else if (jjtGetParent().jjtGetParent() instanceof ASTLocalVariableDeclaration || jjtGetParent().jjtGetParent() instanceof ASTFieldDeclaration) {
62              return findTypeNameNode(jjtGetParent().jjtGetParent());
63          }
64          throw new RuntimeException("Don't know how to get the type for anything other than ASTLocalVariableDeclaration/ASTFormalParameter/ASTFieldDeclaration");
65      }
66  
67      public ASTType getTypeNode() {
68          if (jjtGetParent() instanceof ASTFormalParameter) {
69              return ((ASTFormalParameter) jjtGetParent()).getTypeNode();
70          } else if (jjtGetParent().jjtGetParent() instanceof ASTLocalVariableDeclaration || jjtGetParent().jjtGetParent() instanceof ASTFieldDeclaration) {
71              SimpleNode n = (SimpleNode) jjtGetParent().jjtGetParent();
72              return n.getFirstChildOfType(ASTType.class);
73          }
74          throw new RuntimeException("Don't know how to get the type for anything other than ASTLocalVariableDeclaration/ASTFormalParameter/ASTFieldDeclaration");
75      }
76  
77      private SimpleNode findTypeNameNode(Node node) {
78          int i = 0;
79          while (node.jjtGetChild(i) instanceof ASTAnnotation) {
80              // skip annotations
81              i++;
82          }
83          ASTType typeNode = (ASTType) node.jjtGetChild(i);
84          return (SimpleNode) typeNode.jjtGetChild(0);
85      }
86  }