01 /* Generated By:JJTree: Do not edit this line. ASTFormalParameter.java */
02
03 package net.sourceforge.pmd.lang.java.ast;
04
05 import net.sourceforge.pmd.Rule;
06
07 public class ASTFormalParameter extends AbstractJavaAccessNode implements Dimensionable, CanSuppressWarnings {
08
09 private boolean isVarargs;
10
11
12 public void setVarargs() {
13 isVarargs = true;
14 }
15
16 public boolean isVarargs() {
17 return isVarargs;
18 }
19
20 public ASTFormalParameter(int id) {
21 super(id);
22 }
23
24 public ASTFormalParameter(JavaParser p, int id) {
25 super(p, id);
26 }
27
28 public Object jjtAccept(JavaParserVisitor visitor, Object data) {
29 return visitor.visit(this, data);
30 }
31
32 public boolean hasSuppressWarningsAnnotationFor(Rule rule) {
33 for (int i = 0; i < jjtGetNumChildren(); i++) {
34 if (jjtGetChild(i) instanceof ASTAnnotation) {
35 ASTAnnotation a = (ASTAnnotation) jjtGetChild(i);
36 if (a.suppresses(rule)) {
37 return true;
38 }
39 }
40 }
41 return false;
42 }
43
44 public boolean isArray() {
45 return checkType() + checkDecl() > 0;
46 }
47
48 public int getArrayDepth() {
49 if (!isArray()) {
50 return 0;
51 }
52 return checkType() + checkDecl();
53 }
54
55 public ASTType getTypeNode() {
56 for (int i = 0; i < jjtGetNumChildren(); i++) {
57 if (jjtGetChild(i) instanceof ASTType) {
58 return (ASTType) jjtGetChild(i);
59 }
60 }
61 throw new IllegalStateException("ASTType not found");
62 }
63
64 private int checkType() {
65 return getTypeNode().getArrayDepth();
66 }
67
68 private ASTVariableDeclaratorId getDecl() {
69 return (ASTVariableDeclaratorId) jjtGetChild(jjtGetNumChildren()-1);
70 }
71
72 private int checkDecl() {
73 return getDecl().getArrayDepth();
74 }
75
76 }
|