01 /* Generated By:JJTree: Do not edit this line. ASTLocalVariableDeclaration.java */
02
03 package net.sourceforge.pmd.lang.java.ast;
04
05 import net.sourceforge.pmd.Rule;
06
07 public class ASTLocalVariableDeclaration extends AbstractJavaAccessNode implements Dimensionable, CanSuppressWarnings {
08
09 public ASTLocalVariableDeclaration(int id) {
10 super(id);
11 }
12
13 public ASTLocalVariableDeclaration(JavaParser p, int id) {
14 super(p, id);
15 }
16
17 /**
18 * Accept the visitor. *
19 */
20 @Override
21 public Object jjtAccept(JavaParserVisitor visitor, Object data) {
22 return visitor.visit(this, data);
23 }
24
25 public boolean hasSuppressWarningsAnnotationFor(Rule rule) {
26 for (int i = 0; i < jjtGetNumChildren(); i++) {
27 if (jjtGetChild(i) instanceof ASTAnnotation) {
28 ASTAnnotation a = (ASTAnnotation) jjtGetChild(i);
29 if (a.suppresses(rule)) {
30 return true;
31 }
32 }
33 }
34 return false;
35 }
36
37 public boolean isArray() {
38 return checkType() + checkDecl() > 0;
39 }
40
41 public int getArrayDepth() {
42 return checkType() + checkDecl();
43 }
44
45 public ASTType getTypeNode() {
46 for (int i = 0; i < jjtGetNumChildren(); i++) {
47 if (jjtGetChild(i) instanceof ASTType) {
48 return (ASTType) jjtGetChild(i);
49 }
50 }
51 throw new IllegalStateException("ASTType not found");
52 }
53
54 private int checkType() {
55 return getTypeNode().getArrayDepth();
56 }
57
58 private ASTVariableDeclaratorId getDecl() {
59 return (ASTVariableDeclaratorId) jjtGetChild(jjtGetNumChildren()-1).jjtGetChild(0);
60 }
61
62 private int checkDecl() {
63 return getDecl().getArrayDepth();
64 }
65
66 /**
67 * Gets the variable name of this field.
68 * This method searches the first VariableDeclartorId node and returns it's image or <code>null</code> if the child node is not found.
69 *
70 * @return a String representing the name of the variable
71 */
72 public String getVariableName() {
73 ASTVariableDeclaratorId decl = getFirstDescendantOfType(ASTVariableDeclaratorId.class);
74 if (decl != null) {
75 return decl.getImage();
76 }
77 return null;
78 }
79 }
|