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 }