View Javadoc

1   /***
2    * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3    */
4   package net.sourceforge.pmd.symboltable;
5   
6   import net.sourceforge.pmd.ast.ASTFormalParameter;
7   import net.sourceforge.pmd.ast.ASTVariableDeclaratorId;
8   import net.sourceforge.pmd.ast.AccessNode;
9   import net.sourceforge.pmd.ast.Dimensionable;
10  
11  public class VariableNameDeclaration extends AbstractNameDeclaration implements NameDeclaration {
12  
13      public VariableNameDeclaration(ASTVariableDeclaratorId node) {
14          super(node);
15      }
16  
17      public Scope getScope() {
18          return node.getScope().getEnclosingClassScope();
19      }
20  
21      public boolean isArray() {
22          return ((Dimensionable) (((ASTVariableDeclaratorId) node).getTypeNode().jjtGetParent())).isArray();
23      }
24  
25      public boolean isExceptionBlockParameter() {
26          return ((ASTVariableDeclaratorId) node).isExceptionBlockParameter();
27      }
28  
29      public AccessNode getAccessNodeParent() {
30          if (node.jjtGetParent() instanceof ASTFormalParameter) {
31              return (AccessNode) node.jjtGetParent();
32          }
33          return (AccessNode) node.jjtGetParent().jjtGetParent();
34      }
35  
36      public ASTVariableDeclaratorId getDeclaratorId() {
37          return (ASTVariableDeclaratorId) node;
38      }
39  
40      public boolean equals(Object o) {
41          VariableNameDeclaration n = (VariableNameDeclaration) o;
42          return n.node.getImage().equals(node.getImage());
43      }
44  
45      public int hashCode() {
46          return node.getImage().hashCode();
47      }
48  
49      public String toString() {
50          return "Variable symbol " + node.getImage() + " line " + node.getBeginLine();
51      }
52  }