package soot.JastAddJ;
import java.util.HashSet;import java.util.LinkedHashSet;import java.io.File;import java.util.*;import beaver.*;import java.util.ArrayList;import java.util.zip.*;import java.io.*;import java.io.FileNotFoundException;import java.util.Collection;import soot.*;import soot.util.*;import soot.jimple.*;import soot.coffi.ClassFile;import soot.coffi.method_info;import soot.coffi.CONSTANT_Utf8_info;import soot.tagkit.SourceFileTag;import soot.coffi.CoffiMethodSource;
// Generated with JastAdd II (http://jastadd.cs.lth.se) version R20090610
public class ASTNode<T extends ASTNode> extends beaver.Symbol implements Cloneable, Iterable<T> {
public void flushCache() {
}
public void flushCollectionCache() {
}
@SuppressWarnings({"unchecked", "cast"}) public ASTNode<T> clone() throws CloneNotSupportedException {
ASTNode node = (ASTNode)super.clone();
node.in$Circle(false);
node.is$Final(false);
return node;
}
@SuppressWarnings({"unchecked", "cast"}) public ASTNode<T> copy() {
try {
ASTNode node = (ASTNode)clone();
if(children != null) node.children = (ASTNode[])children.clone();
return node;
} catch (CloneNotSupportedException e) {
}
System.err.println("Error: Could not clone node of type " + getClass().getName() + "!");
return null;
}
@SuppressWarnings({"unchecked", "cast"}) public ASTNode<T> fullCopy() {
ASTNode res = (ASTNode)copy();
for(int i = 0; i < getNumChildNoTransform(); i++) {
ASTNode node = getChildNoTransform(i);
if(node != null) node = node.fullCopy();
res.setChild(node, i);
}
return res;
}
// Declared in AccessControl.jrag at line 125
public void accessControl() {
}
// Declared in AnonymousClasses.jrag at line 190
protected void collectExceptions(Collection c, ASTNode target) {
for(int i = 0; i < getNumChild(); i++)
getChild(i).collectExceptions(c, target);
}
// Declared in BranchTarget.jrag at line 45
public void collectBranches(Collection c) {
for(int i = 0; i < getNumChild(); i++)
getChild(i).collectBranches(c);
}
// Declared in BranchTarget.jrag at line 151
public Stmt branchTarget(Stmt branchStmt) {
if(getParent() != null)
return getParent().branchTarget(branchStmt);
else
return null;
}
// Declared in BranchTarget.jrag at line 191
public void collectFinally(Stmt branchStmt, ArrayList list) {
if(getParent() != null)
getParent().collectFinally(branchStmt, list);
}
// Declared in DeclareBeforeUse.jrag at line 13
public int varChildIndex(Block b) {
ASTNode node = this;
while(node.getParent().getParent() != b) {
node = node.getParent();
}
return b.getStmtListNoTransform().getIndexOfChild(node);
}
// Declared in DeclareBeforeUse.jrag at line 31
public int varChildIndex(TypeDecl t) {
ASTNode node = this;
while(node != null && node.getParent() != null && node.getParent().getParent() != t) {
node = node.getParent();
}
if(node == null)
return -1;
return t.getBodyDeclListNoTransform().getIndexOfChild(node);
}
// Declared in DefiniteAssignment.jrag at line 12
public void definiteAssignment() {
}
// Declared in DefiniteAssignment.jrag at line 451
// 16.2.2 9th, 10th bullet
protected boolean checkDUeverywhere(Variable v) {
for(int i = 0; i < getNumChild(); i++)
if(!getChild(i).checkDUeverywhere(v))
return false;
return true;
}
// Declared in DefiniteAssignment.jrag at line 561
protected boolean isDescendantTo(ASTNode node) {
if(this == node)
return true;
if(getParent() == null)
return false;
return getParent().isDescendantTo(node);
}
// Declared in ErrorCheck.jrag at line 12
protected String sourceFile() {
ASTNode node = this;
while(node != null && !(node instanceof CompilationUnit))
node = node.getParent();
if(node == null)
return "Unknown file";
CompilationUnit u = (CompilationUnit)node;
return u.relativeName();
}
// Declared in ErrorCheck.jrag at line 34
// set start and end position to the same as the argument and return self
public ASTNode setLocation(ASTNode node) {
setStart(node.getStart());
setEnd(node.getEnd());
return this;
}
// Declared in ErrorCheck.jrag at line 40
public ASTNode setStart(int i) {
start = i;
return this;
}
// Declared in ErrorCheck.jrag at line 44
public int start() {
return start;
}
// Declared in ErrorCheck.jrag at line 47
public ASTNode setEnd(int i) {
end = i;
return this;
}
// Declared in ErrorCheck.jrag at line 51
public int end() {
return end;
}
// Declared in ErrorCheck.jrag at line 55
public String location() {
return "" + lineNumber();
}
// Declared in ErrorCheck.jrag at line 58
public String errorPrefix() {
return sourceFile() + ":" + location() + ":\n" + " *** Semantic Error: ";
}
// Declared in ErrorCheck.jrag at line 61
public String warningPrefix() {
return sourceFile() + ":" + location() + ":\n" + " *** WARNING: ";
}
// Declared in ErrorCheck.jrag at line 171
public void error(String s) {
ASTNode node = this;
while(node != null && !(node instanceof CompilationUnit))
node = node.getParent();
CompilationUnit cu = (CompilationUnit)node;
if(getNumChild() == 0 && getStart() != 0 && getEnd() != 0) {
int line = getLine(getStart());
int column = getColumn(getStart());
int endLine = getLine(getEnd());
int endColumn = getColumn(getEnd());
cu.errors.add(new Problem(sourceFile(), s, line, column, endLine, endColumn, Problem.Severity.ERROR, Problem.Kind.SEMANTIC));
}
else
cu.errors.add(new Problem(sourceFile(), s, lineNumber(), Problem.Severity.ERROR, Problem.Kind.SEMANTIC));
}
// Declared in ErrorCheck.jrag at line 187
public void warning(String s) {
ASTNode node = this;
while(node != null && !(node instanceof CompilationUnit))
node = node.getParent();
CompilationUnit cu = (CompilationUnit)node;
cu.warnings.add(new Problem(sourceFile(), "WARNING: " + s, lineNumber(), Problem.Severity.WARNING));
}
// Declared in ErrorCheck.jrag at line 195
public void collectErrors() {
nameCheck();
typeCheck();
accessControl();
exceptionHandling();
checkUnreachableStmt();
definiteAssignment();
checkModifiers();
for(int i = 0; i < getNumChild(); i++) {
getChild(i).collectErrors();
}
}
// Declared in ExceptionHandling.jrag at line 40
public void exceptionHandling() {
}
// Declared in ExceptionHandling.jrag at line 196
protected boolean reachedException(TypeDecl type) {
for(int i = 0; i < getNumChild(); i++)
if(getChild(i).reachedException(type))
return true;
return false;
}
// Declared in LookupMethod.jrag at line 54
public static Collection removeInstanceMethods(Collection c) {
c = new LinkedList(c);
for(Iterator iter = c.iterator(); iter.hasNext(); ) {
MethodDecl m = (MethodDecl)iter.next();
if(!m.isStatic())
iter.remove();
}
return c;
}
// Declared in LookupMethod.jrag at line 342
protected static void putSimpleSetElement(HashMap map, Object key, Object value) {
SimpleSet set = (SimpleSet)map.get(key);
if(set == null) set = SimpleSet.emptySet;
map.put(key, set.add(value));
}
// Declared in LookupVariable.jrag at line 177
public SimpleSet removeInstanceVariables(SimpleSet oldSet) {
SimpleSet newSet = SimpleSet.emptySet;
for(Iterator iter = oldSet.iterator(); iter.hasNext(); ) {
Variable v = (Variable)iter.next();
if(!v.isInstanceVariable())
newSet = newSet.add(v);
}
return newSet;
}
// Declared in Modifiers.jrag at line 11
void checkModifiers() {
}
// Declared in NameCheck.jrag at line 11
public void nameCheck() {
}
// Declared in NameCheck.jrag at line 14
public TypeDecl extractSingleType(SimpleSet c) {
if(c.size() != 1)
return null;
return (TypeDecl)c.iterator().next();
}
// Declared in Options.jadd at line 14
public Options options() {
return state().options;
}
// Declared in PrettyPrint.jadd at line 13
// Default output
public String toString() {
StringBuffer s = new StringBuffer();
toString(s);
return s.toString().trim();
}
// Declared in PrettyPrint.jadd at line 19
public void toString(StringBuffer s) {
throw new Error("Operation toString(StringBuffer s) not implemented for " + getClass().getName());
}
// Declared in PrettyPrint.jadd at line 769
// dump the AST to standard output
public String dumpTree() {
StringBuffer s = new StringBuffer();
dumpTree(s, 0);
return s.toString();
}
// Declared in PrettyPrint.jadd at line 775
public void dumpTree(StringBuffer s, int j) {
for(int i = 0; i < j; i++) {
s.append(" ");
}
s.append(dumpString() + "\n");
for(int i = 0; i < getNumChild(); i++)
getChild(i).dumpTree(s, j + 1);
}
// Declared in PrettyPrint.jadd at line 784
public String dumpTreeNoRewrite() {
StringBuffer s = new StringBuffer();
dumpTreeNoRewrite(s, 0);
return s.toString();
}
// Declared in PrettyPrint.jadd at line 789
protected void dumpTreeNoRewrite(StringBuffer s, int indent) {
for(int i = 0; i < indent; i++)
s.append(" ");
s.append(dumpString());
s.append("\n");
for(int i = 0; i < getNumChildNoTransform(); i++) {
getChildNoTransform(i).dumpTreeNoRewrite(s, indent+1);
}
}
// Declared in PrimitiveTypes.jrag at line 11
protected static final String PRIMITIVE_PACKAGE_NAME = "@primitive";
// Declared in TypeCheck.jrag at line 12
public void typeCheck() {
}
// Declared in UnreachableStatements.jrag at line 12
void checkUnreachableStmt() {
}
// Declared in VariableDeclaration.jrag at line 141
public void clearLocations() {
setStart(0);
setEnd(0);
for(int i = 0; i < getNumChildNoTransform(); i++)
getChildNoTransform(i).clearLocations();
}
// Declared in Enums.jrag at line 128
protected void transformEnumConstructors() {
for(int i = 0; i < getNumChildNoTransform(); i++) {
ASTNode child = getChildNoTransform(i);
if(child != null)
child.transformEnumConstructors();
}
}
// Declared in Enums.jrag at line 411
/*
14) It is a compile-time error to reference a static field of an enum type that
is not a compile-time constant (\ufffd15.28) from constructors, instance
initializer blocks, or instance variable initializer expressions of that
type.
*/
protected void checkEnum(EnumDecl enumDecl) {
for(int i = 0; i < getNumChild(); i++)
getChild(i).checkEnum(enumDecl);
}
// Declared in InnerClasses.jrag at line 155
public void collectEnclosingVariables(HashSet set, TypeDecl typeDecl) {
for(int i = 0; i < getNumChild(); i++)
getChild(i).collectEnclosingVariables(set, typeDecl);
}
// Declared in Java2Rewrites.jrag at line 63
public void flushCaches() {
flushCache();
for(int i = 0; i < getNumChild(); i++)
getChild(i).flushCaches();
}
// Declared in Transformations.jrag at line 12
// generic traversal of the tree
public void transformation() {
for(int i = 0; i < getNumChild(); i++) {
getChild(i).transformation();
}
}
// Declared in Transformations.jrag at line 209
// imperative transformation of the AST
// syntax ASTNode.replace(sourcenode).with(destnode)
// this syntax is used to allow for building the destnode using the sourcenode
protected ASTNode replace(ASTNode node) {
state().replacePos = node.getParent().getIndexOfChild(node);
node.getParent().in$Circle(true);
return node.getParent();
}
// Declared in Transformations.jrag at line 214
protected ASTNode with(ASTNode node) {
((ASTNode)this).setChild(node, state().replacePos);
in$Circle(false);
return node;
}
// Declared in EmitJimple.jrag at line 60
public void jimplify1phase1() {
for(int i = 0; i < getNumChild(); i++)
getChild(i).jimplify1phase1();
}
// Declared in EmitJimple.jrag at line 137
public void jimplify1phase2() {
for(int i = 0; i < getNumChild(); i++)
getChild(i).jimplify1phase2();
}
// Declared in EmitJimple.jrag at line 366
public void jimplify2() {
for(int i = 0; i < getNumChild(); i++)
getChild(i).jimplify2();
}
// Declared in EmitJimple.jrag at line 371
public void jimplify2(Body b) {
for(int i = 0; i < getNumChild(); i++)
getChild(i).jimplify2(b);
}
// Declared in EmitJimple.jrag at line 405
public soot.Immediate asImmediate(Body b, soot.Value v) {
if(v instanceof soot.Immediate) return (soot.Immediate)v;
return b.newTemp(v);
}
// Declared in EmitJimple.jrag at line 409
public soot.Local asLocal(Body b, soot.Value v) {
if(v instanceof soot.Local) return (soot.Local)v;
return b.newTemp(v);
}
// Declared in EmitJimple.jrag at line 413
public soot.Local asLocal(Body b, soot.Value v, Type t) {
if(v instanceof soot.Local) return (soot.Local)v;
soot.Local local = b.newTemp(t);
b.add(b.newAssignStmt(local, v, null));
b.copyLocation(v, local);
return local;
}
// Declared in EmitJimple.jrag at line 420
public soot.Value asRValue(Body b, soot.Value v) {
if(v instanceof soot.Local) return v;
if(v instanceof soot.jimple.Constant) return v;
if(v instanceof soot.jimple.ConcreteRef) return v;
if(v instanceof soot.jimple.Expr) return v;
throw new Error("Need to convert " + v.getClass().getName() + " to RValue");
}
// Declared in EmitJimple.jrag at line 879
protected soot.jimple.Stmt newLabel() {
return soot.jimple.Jimple.v().newNopStmt();
}
// Declared in EmitJimple.jrag at line 959
public void addAttributes() {
}
// Declared in Expressions.jrag at line 718
public static soot.Value emitConstant(Constant constant) {
if(constant instanceof Constant.ConstantInt)
return IntType.emitConstant(constant.intValue());
else if(constant instanceof Constant.ConstantLong)
return soot.jimple.LongConstant.v(constant.longValue());
else if(constant instanceof Constant.ConstantFloat)
return soot.jimple.FloatConstant.v(constant.floatValue());
else if(constant instanceof Constant.ConstantDouble)
return soot.jimple.DoubleConstant.v(constant.doubleValue());
else if(constant instanceof Constant.ConstantChar)
return IntType.emitConstant(constant.intValue());
else if(constant instanceof Constant.ConstantBoolean)
return BooleanType.emitConstant(constant.booleanValue());
else if(constant instanceof Constant.ConstantString)
return soot.jimple.StringConstant.v(constant.stringValue());
throw new Error("Unexpected constant");
}
// Declared in Statements.jrag at line 255
public void endExceptionRange(Body b, ArrayList list) {
if(list != null) {
soot.jimple.Stmt label = newLabel();
b.addLabel(label);
list.add(label);
//list.add(b.previousStmt());
}
}
// Declared in Statements.jrag at line 263
public void beginExceptionRange(Body b, ArrayList list) {
if(list != null)
b.addNextStmt(list);
}
// Declared in EmitJimpleRefinements.jrag at line 197
public void collectTypesToHierarchy(Collection<Type> set) {
for(int i = 0; i < getNumChild(); i++)
getChild(i).collectTypesToHierarchy(set);
}
// Declared in EmitJimpleRefinements.jrag at line 215
public void collectTypesToSignatures(Collection<Type> set) {
for(int i = 0; i < getNumChild(); i++)
getChild(i).collectTypesToSignatures(set);
}
// Declared in ASTNode.ast at line 3
// Declared in ASTNode.ast line 0
public ASTNode() {
super();
}
// Declared in ASTNode.ast at line 9
public static final boolean generatedWithCircularEnabled = true;
// Declared in ASTNode.ast at line 10
public static final boolean generatedWithCacheCycle = false;
// Declared in ASTNode.ast at line 11
public static final boolean generatedWithComponentCheck = false;
// Declared in ASTNode.ast at line 12
protected static ASTNode$State state = new ASTNode$State();
// Declared in ASTNode.ast at line 13
public final ASTNode$State state() { return state; }
// Declared in ASTNode.ast at line 14
public boolean in$Circle = false;
// Declared in ASTNode.ast at line 15
public boolean in$Circle() { return in$Circle; }
// Declared in ASTNode.ast at line 16
public void in$Circle(boolean b) { in$Circle = b; }
// Declared in ASTNode.ast at line 17
public boolean is$Final = false;
// Declared in ASTNode.ast at line 18
public boolean is$Final() { return is$Final; }
// Declared in ASTNode.ast at line 19
public void is$Final(boolean b) { is$Final = b; }
// Declared in ASTNode.ast at line 20
@SuppressWarnings("cast") public T getChild(int i) {
return (T)ASTNode.getChild(this, i);
}
// Declared in ASTNode.ast at line 23
public static ASTNode getChild(ASTNode that, int i) {
ASTNode node = that.getChildNoTransform(i);
if(node.is$Final()) return node;
if(!node.mayHaveRewrite()) {
node.is$Final(that.is$Final());
return node;
}
if(!node.in$Circle()) {
int rewriteState;
int num = that.state().boundariesCrossed;
do {
that.state().push(ASTNode$State.REWRITE_CHANGE);
ASTNode oldNode = node;
oldNode.in$Circle(true);
node = node.rewriteTo();
if(node != oldNode)
that.setChild(node, i);
oldNode.in$Circle(false);
rewriteState = that.state().pop();
} while(rewriteState == ASTNode$State.REWRITE_CHANGE);
if(rewriteState == ASTNode$State.REWRITE_NOCHANGE && that.is$Final()) {
node.is$Final(true);
that.state().boundariesCrossed = num;
}
}
else if(that.is$Final() != node.is$Final()) that.state().boundariesCrossed++;
return node;
}
// Declared in ASTNode.ast at line 51
private int childIndex;
// Declared in ASTNode.ast at line 52
public int getIndexOfChild(ASTNode node) {
if(node != null && node.childIndex < getNumChildNoTransform() && node == getChildNoTransform(node.childIndex))
return node.childIndex;
for(int i = 0; i < getNumChildNoTransform(); i++)
if(getChildNoTransform(i) == node) {
node.childIndex = i;
return i;
}
return -1;
}
// Declared in ASTNode.ast at line 63
public void addChild(T node) {
setChild(node, getNumChildNoTransform());
}
// Declared in ASTNode.ast at line 66
@SuppressWarnings("cast") public final T getChildNoTransform(int i) {
return (T)children[i];
}
// Declared in ASTNode.ast at line 69
protected int numChildren;
// Declared in ASTNode.ast at line 70
protected int numChildren() {
return numChildren;
}
// Declared in ASTNode.ast at line 73
public int getNumChild() {
return numChildren();
}
// Declared in ASTNode.ast at line 76
public final int getNumChildNoTransform() {
return numChildren();
}
// Declared in ASTNode.ast at line 79
public void setChild(T node, int i) {
if(children == null) {
children = new ASTNode[i + 1];
} else if (i >= children.length) {
ASTNode c[] = new ASTNode[i << 1];
System.arraycopy(children, 0, c, 0, children.length);
children = c;
}
children[i] = node;
if(i >= numChildren) numChildren = i+1;
if(node != null) { node.setParent(this); node.childIndex = i; }
}
// Declared in ASTNode.ast at line 91
public void insertChild(T node, int i) {
if(children == null) {
children = new ASTNode[i + 1];
children[i] = node;
} else {
ASTNode c[] = new ASTNode[children.length + 1];
System.arraycopy(children, 0, c, 0, i);
c[i] = node;
if(i < children.length)
System.arraycopy(children, i, c, i+1, children.length-i);
children = c;
}
numChildren++;
if(node != null) { node.setParent(this); node.childIndex = i; }
}
// Declared in ASTNode.ast at line 106
public void removeChild(int i) {
if(children != null) {
ASTNode child = (ASTNode)children[i];
if(child != null) {
child.setParent(null);
child.childIndex = -1;
}
System.arraycopy(children, i+1, children, i, children.length-i-1);
numChildren--;
}
}
// Declared in ASTNode.ast at line 117
public ASTNode getParent() {
if(parent != null && ((ASTNode)parent).is$Final() != is$Final()) {
state().boundariesCrossed++;
}
return (ASTNode)parent;
}
// Declared in ASTNode.ast at line 123
public void setParent(ASTNode node) {
parent = node;
}
// Declared in ASTNode.ast at line 126
protected ASTNode parent;
// Declared in ASTNode.ast at line 127
protected ASTNode[] children;
// Declared in ASTNode.ast at line 129
protected boolean duringLookupConstructor() {
if(state().duringLookupConstructor == 0) {
return false;
}
else {
state().pop();
state().push(ASTNode$State.REWRITE_INTERRUPT);
return true;
}
}
// Declared in ASTNode.ast at line 140
protected boolean duringBoundNames() {
if(state().duringBoundNames == 0) {
return false;
}
else {
state().pop();
state().push(ASTNode$State.REWRITE_INTERRUPT);
return true;
}
}
// Declared in ASTNode.ast at line 151
protected boolean duringResolveAmbiguousNames() {
if(state().duringResolveAmbiguousNames == 0) {
return false;
}
else {
state().pop();
state().push(ASTNode$State.REWRITE_INTERRUPT);
return true;
}
}
// Declared in ASTNode.ast at line 162
protected boolean duringSyntacticClassification() {
if(state().duringSyntacticClassification == 0) {
return false;
}
else {
state().pop();
state().push(ASTNode$State.REWRITE_INTERRUPT);
return true;
}
}
// Declared in ASTNode.ast at line 173
protected boolean duringAnonymousClasses() {
if(state().duringAnonymousClasses == 0) {
return false;
}
else {
state().pop();
state().push(ASTNode$State.REWRITE_INTERRUPT);
return true;
}
}
// Declared in ASTNode.ast at line 184
protected boolean duringVariableDeclaration() {
if(state().duringVariableDeclaration == 0) {
return false;
}
else {
state().pop();
state().push(ASTNode$State.REWRITE_INTERRUPT);
return true;
}
}
// Declared in ASTNode.ast at line 195
protected boolean duringConstantExpression() {
if(state().duringConstantExpression == 0) {
return false;
}
else {
state().pop();
state().push(ASTNode$State.REWRITE_INTERRUPT);
return true;
}
}
// Declared in ASTNode.ast at line 206
protected boolean duringDefiniteAssignment() {
if(state().duringDefiniteAssignment == 0) {
return false;
}
else {
state().pop();
state().push(ASTNode$State.REWRITE_INTERRUPT);
return true;
}
}
// Declared in ASTNode.ast at line 217
protected boolean duringAnnotations() {
if(state().duringAnnotations == 0) {
return false;
}
else {
state().pop();
state().push(ASTNode$State.REWRITE_INTERRUPT);
return true;
}
}
// Declared in ASTNode.ast at line 228
protected boolean duringEnums() {
if(state().duringEnums == 0) {
return false;
}
else {
state().pop();
state().push(ASTNode$State.REWRITE_INTERRUPT);
return true;
}
}
// Declared in ASTNode.ast at line 239
protected boolean duringGenericTypeVariables() {
if(state().duringGenericTypeVariables == 0) {
return false;
}
else {
state().pop();
state().push(ASTNode$State.REWRITE_INTERRUPT);
return true;
}
}
// Declared in ASTNode.ast at line 299
public java.util.Iterator<T> iterator() {
return new java.util.Iterator<T>() {
private int counter = 0;
public boolean hasNext() {
return counter < getNumChild();
}
@SuppressWarnings("unchecked") public T next() {
if(hasNext())
return (T)getChild(counter++);
else
return null;
}
public void remove() {
throw new UnsupportedOperationException();
}
};
}
// Declared in ASTNode.ast at line 316
public boolean mayHaveRewrite() {
return false;
}
// Declared in DefiniteAssignment.jrag at line 1200
@SuppressWarnings({"unchecked", "cast"}) public boolean unassignedEverywhere(Variable v, TryStmt stmt) {
ASTNode$State state = state();
boolean unassignedEverywhere_Variable_TryStmt_value = unassignedEverywhere_compute(v, stmt);
return unassignedEverywhere_Variable_TryStmt_value;
}
private boolean unassignedEverywhere_compute(Variable v, TryStmt stmt) {
for(int i = 0; i < getNumChild(); i++) {
if(!getChild(i).unassignedEverywhere(v, stmt))
return false;
}
return true;
}
// Declared in ErrorCheck.jrag at line 22
@SuppressWarnings({"unchecked", "cast"}) public int lineNumber() {
ASTNode$State state = state();
int lineNumber_value = lineNumber_compute();
return lineNumber_value;
}
private int lineNumber_compute() {
ASTNode n = this;
while(n.getParent() != null && n.getStart() == 0) {
n = n.getParent();
}
return getLine(n.getStart());
}
// Declared in PrettyPrint.jadd at line 743
@SuppressWarnings({"unchecked", "cast"}) public String indent() {
ASTNode$State state = state();
String indent_value = indent_compute();
return indent_value;
}
private String indent_compute() {
String indent = extractIndent();
return indent.startsWith("\n") ? indent : ("\n" + indent);
}
// Declared in PrettyPrint.jadd at line 748
@SuppressWarnings({"unchecked", "cast"}) public String extractIndent() {
ASTNode$State state = state();
String extractIndent_value = extractIndent_compute();
return extractIndent_value;
}
private String extractIndent_compute() {
if(getParent() == null)
return "";
String indent = getParent().extractIndent();
if(getParent().addsIndentationLevel())
indent += " ";
return indent;
}
// Declared in PrettyPrint.jadd at line 757
@SuppressWarnings({"unchecked", "cast"}) public boolean addsIndentationLevel() {
ASTNode$State state = state();
boolean addsIndentationLevel_value = addsIndentationLevel_compute();
return addsIndentationLevel_value;
}
private boolean addsIndentationLevel_compute() { return false; }
// Declared in PrettyPrint.jadd at line 799
@SuppressWarnings({"unchecked", "cast"}) public String dumpString() {
ASTNode$State state = state();
String dumpString_value = dumpString_compute();
return dumpString_value;
}
private String dumpString_compute() { return getClass().getName(); }
// Declared in Generics.jrag at line 897
@SuppressWarnings({"unchecked", "cast"}) public boolean usesTypeVariable() {
ASTNode$State state = state();
boolean usesTypeVariable_value = usesTypeVariable_compute();
return usesTypeVariable_value;
}
private boolean usesTypeVariable_compute() {
for(int i = 0; i < getNumChild(); i++)
if(getChild(i).usesTypeVariable())
return true;
return false;
}
// Declared in InnerClasses.jrag at line 85
@SuppressWarnings({"unchecked", "cast"}) public boolean isStringAdd() {
ASTNode$State state = state();
boolean isStringAdd_value = isStringAdd_compute();
return isStringAdd_value;
}
private boolean isStringAdd_compute() { return false; }
// Declared in BooleanExpressions.jrag at line 21
@SuppressWarnings({"unchecked", "cast"}) public boolean definesLabel() {
ASTNode$State state = state();
boolean definesLabel_value = definesLabel_compute();
return definesLabel_value;
}
private boolean definesLabel_compute() { return false; }
public ASTNode rewriteTo() {
if(state().peek() == ASTNode$State.REWRITE_CHANGE) {
state().pop();
state().push(ASTNode$State.REWRITE_NOCHANGE);
}
return this;
}
public TypeDecl Define_TypeDecl_superType(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_superType(this, caller);
}
public ConstructorDecl Define_ConstructorDecl_constructorDecl(ASTNode caller, ASTNode child) {
return getParent().Define_ConstructorDecl_constructorDecl(this, caller);
}
public TypeDecl Define_TypeDecl_componentType(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_componentType(this, caller);
}
public LabeledStmt Define_LabeledStmt_lookupLabel(ASTNode caller, ASTNode child, String name) {
return getParent().Define_LabeledStmt_lookupLabel(this, caller, name);
}
public boolean Define_boolean_isDest(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_isDest(this, caller);
}
public boolean Define_boolean_isSource(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_isSource(this, caller);
}
public boolean Define_boolean_isIncOrDec(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_isIncOrDec(this, caller);
}
public boolean Define_boolean_isDAbefore(ASTNode caller, ASTNode child, Variable v) {
return getParent().Define_boolean_isDAbefore(this, caller, v);
}
public boolean Define_boolean_isDUbefore(ASTNode caller, ASTNode child, Variable v) {
return getParent().Define_boolean_isDUbefore(this, caller, v);
}
public TypeDecl Define_TypeDecl_typeException(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_typeException(this, caller);
}
public TypeDecl Define_TypeDecl_typeRuntimeException(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_typeRuntimeException(this, caller);
}
public TypeDecl Define_TypeDecl_typeError(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_typeError(this, caller);
}
public TypeDecl Define_TypeDecl_typeNullPointerException(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_typeNullPointerException(this, caller);
}
public TypeDecl Define_TypeDecl_typeThrowable(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_typeThrowable(this, caller);
}
public boolean Define_boolean_handlesException(ASTNode caller, ASTNode child, TypeDecl exceptionType) {
return getParent().Define_boolean_handlesException(this, caller, exceptionType);
}
public Collection Define_Collection_lookupConstructor(ASTNode caller, ASTNode child) {
return getParent().Define_Collection_lookupConstructor(this, caller);
}
public Collection Define_Collection_lookupSuperConstructor(ASTNode caller, ASTNode child) {
return getParent().Define_Collection_lookupSuperConstructor(this, caller);
}
public Expr Define_Expr_nestedScope(ASTNode caller, ASTNode child) {
return getParent().Define_Expr_nestedScope(this, caller);
}
public Collection Define_Collection_lookupMethod(ASTNode caller, ASTNode child, String name) {
return getParent().Define_Collection_lookupMethod(this, caller, name);
}
public TypeDecl Define_TypeDecl_typeObject(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_typeObject(this, caller);
}
public TypeDecl Define_TypeDecl_typeCloneable(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_typeCloneable(this, caller);
}
public TypeDecl Define_TypeDecl_typeSerializable(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_typeSerializable(this, caller);
}
public TypeDecl Define_TypeDecl_typeBoolean(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_typeBoolean(this, caller);
}
public TypeDecl Define_TypeDecl_typeByte(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_typeByte(this, caller);
}
public TypeDecl Define_TypeDecl_typeShort(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_typeShort(this, caller);
}
public TypeDecl Define_TypeDecl_typeChar(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_typeChar(this, caller);
}
public TypeDecl Define_TypeDecl_typeInt(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_typeInt(this, caller);
}
public TypeDecl Define_TypeDecl_typeLong(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_typeLong(this, caller);
}
public TypeDecl Define_TypeDecl_typeFloat(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_typeFloat(this, caller);
}
public TypeDecl Define_TypeDecl_typeDouble(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_typeDouble(this, caller);
}
public TypeDecl Define_TypeDecl_typeString(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_typeString(this, caller);
}
public TypeDecl Define_TypeDecl_typeVoid(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_typeVoid(this, caller);
}
public TypeDecl Define_TypeDecl_typeNull(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_typeNull(this, caller);
}
public TypeDecl Define_TypeDecl_unknownType(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_unknownType(this, caller);
}
public boolean Define_boolean_hasPackage(ASTNode caller, ASTNode child, String packageName) {
return getParent().Define_boolean_hasPackage(this, caller, packageName);
}
public TypeDecl Define_TypeDecl_lookupType(ASTNode caller, ASTNode child, String packageName, String typeName) {
return getParent().Define_TypeDecl_lookupType(this, caller, packageName, typeName);
}
public SimpleSet Define_SimpleSet_lookupType(ASTNode caller, ASTNode child, String name) {
return getParent().Define_SimpleSet_lookupType(this, caller, name);
}
public SimpleSet Define_SimpleSet_lookupVariable(ASTNode caller, ASTNode child, String name) {
return getParent().Define_SimpleSet_lookupVariable(this, caller, name);
}
public boolean Define_boolean_mayBePublic(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_mayBePublic(this, caller);
}
public boolean Define_boolean_mayBeProtected(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_mayBeProtected(this, caller);
}
public boolean Define_boolean_mayBePrivate(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_mayBePrivate(this, caller);
}
public boolean Define_boolean_mayBeStatic(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_mayBeStatic(this, caller);
}
public boolean Define_boolean_mayBeFinal(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_mayBeFinal(this, caller);
}
public boolean Define_boolean_mayBeAbstract(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_mayBeAbstract(this, caller);
}
public boolean Define_boolean_mayBeVolatile(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_mayBeVolatile(this, caller);
}
public boolean Define_boolean_mayBeTransient(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_mayBeTransient(this, caller);
}
public boolean Define_boolean_mayBeStrictfp(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_mayBeStrictfp(this, caller);
}
public boolean Define_boolean_mayBeSynchronized(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_mayBeSynchronized(this, caller);
}
public boolean Define_boolean_mayBeNative(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_mayBeNative(this, caller);
}
public ASTNode Define_ASTNode_enclosingBlock(ASTNode caller, ASTNode child) {
return getParent().Define_ASTNode_enclosingBlock(this, caller);
}
public VariableScope Define_VariableScope_outerScope(ASTNode caller, ASTNode child) {
return getParent().Define_VariableScope_outerScope(this, caller);
}
public boolean Define_boolean_insideLoop(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_insideLoop(this, caller);
}
public boolean Define_boolean_insideSwitch(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_insideSwitch(this, caller);
}
public Case Define_Case_bind(ASTNode caller, ASTNode child, Case c) {
return getParent().Define_Case_bind(this, caller, c);
}
public String Define_String_typeDeclIndent(ASTNode caller, ASTNode child) {
return getParent().Define_String_typeDeclIndent(this, caller);
}
public NameType Define_NameType_nameType(ASTNode caller, ASTNode child) {
return getParent().Define_NameType_nameType(this, caller);
}
public boolean Define_boolean_isAnonymous(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_isAnonymous(this, caller);
}
public Variable Define_Variable_unknownField(ASTNode caller, ASTNode child) {
return getParent().Define_Variable_unknownField(this, caller);
}
public MethodDecl Define_MethodDecl_unknownMethod(ASTNode caller, ASTNode child) {
return getParent().Define_MethodDecl_unknownMethod(this, caller);
}
public ConstructorDecl Define_ConstructorDecl_unknownConstructor(ASTNode caller, ASTNode child) {
return getParent().Define_ConstructorDecl_unknownConstructor(this, caller);
}
public TypeDecl Define_TypeDecl_declType(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_declType(this, caller);
}
public BodyDecl Define_BodyDecl_enclosingBodyDecl(ASTNode caller, ASTNode child) {
return getParent().Define_BodyDecl_enclosingBodyDecl(this, caller);
}
public boolean Define_boolean_isMemberType(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_isMemberType(this, caller);
}
public TypeDecl Define_TypeDecl_hostType(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_hostType(this, caller);
}
public TypeDecl Define_TypeDecl_switchType(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_switchType(this, caller);
}
public TypeDecl Define_TypeDecl_returnType(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_returnType(this, caller);
}
public TypeDecl Define_TypeDecl_enclosingInstance(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_enclosingInstance(this, caller);
}
public String Define_String_methodHost(ASTNode caller, ASTNode child) {
return getParent().Define_String_methodHost(this, caller);
}
public boolean Define_boolean_inExplicitConstructorInvocation(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_inExplicitConstructorInvocation(this, caller);
}
public boolean Define_boolean_inStaticContext(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_inStaticContext(this, caller);
}
public boolean Define_boolean_reportUnreachable(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_reportUnreachable(this, caller);
}
public boolean Define_boolean_isMethodParameter(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_isMethodParameter(this, caller);
}
public boolean Define_boolean_isConstructorParameter(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_isConstructorParameter(this, caller);
}
public boolean Define_boolean_isExceptionHandlerParameter(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_isExceptionHandlerParameter(this, caller);
}
public boolean Define_boolean_mayUseAnnotationTarget(ASTNode caller, ASTNode child, String name) {
return getParent().Define_boolean_mayUseAnnotationTarget(this, caller, name);
}
public ElementValue Define_ElementValue_lookupElementTypeValue(ASTNode caller, ASTNode child, String name) {
return getParent().Define_ElementValue_lookupElementTypeValue(this, caller, name);
}
public boolean Define_boolean_withinSuppressWarnings(ASTNode caller, ASTNode child, String s) {
return getParent().Define_boolean_withinSuppressWarnings(this, caller, s);
}
public boolean Define_boolean_withinDeprecatedAnnotation(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_withinDeprecatedAnnotation(this, caller);
}
public Annotation Define_Annotation_lookupAnnotation(ASTNode caller, ASTNode child, TypeDecl typeDecl) {
return getParent().Define_Annotation_lookupAnnotation(this, caller, typeDecl);
}
public TypeDecl Define_TypeDecl_enclosingAnnotationDecl(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_enclosingAnnotationDecl(this, caller);
}
public GenericMethodDecl Define_GenericMethodDecl_genericMethodDecl(ASTNode caller, ASTNode child) {
return getParent().Define_GenericMethodDecl_genericMethodDecl(this, caller);
}
public GenericConstructorDecl Define_GenericConstructorDecl_genericConstructorDecl(ASTNode caller, ASTNode child) {
return getParent().Define_GenericConstructorDecl_genericConstructorDecl(this, caller);
}
public TypeDecl Define_TypeDecl_assignConvertedType(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_assignConvertedType(this, caller);
}
public TypeDecl Define_TypeDecl_typeWildcard(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_typeWildcard(this, caller);
}
public TypeDecl Define_TypeDecl_lookupWildcardExtends(ASTNode caller, ASTNode child, TypeDecl typeDecl) {
return getParent().Define_TypeDecl_lookupWildcardExtends(this, caller, typeDecl);
}
public TypeDecl Define_TypeDecl_lookupWildcardSuper(ASTNode caller, ASTNode child, TypeDecl typeDecl) {
return getParent().Define_TypeDecl_lookupWildcardSuper(this, caller, typeDecl);
}
public LUBType Define_LUBType_lookupLUBType(ASTNode caller, ASTNode child, Collection bounds) {
return getParent().Define_LUBType_lookupLUBType(this, caller, bounds);
}
public GLBType Define_GLBType_lookupGLBType(ASTNode caller, ASTNode child, ArrayList bounds) {
return getParent().Define_GLBType_lookupGLBType(this, caller, bounds);
}
public TypeDecl Define_TypeDecl_genericDecl(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_genericDecl(this, caller);
}
public boolean Define_boolean_variableArityValid(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_variableArityValid(this, caller);
}
public TypeDecl Define_TypeDecl_expectedType(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_expectedType(this, caller);
}
public soot.jimple.Stmt Define_soot_jimple_Stmt_condition_false_label(ASTNode caller, ASTNode child) {
return getParent().Define_soot_jimple_Stmt_condition_false_label(this, caller);
}
public soot.jimple.Stmt Define_soot_jimple_Stmt_condition_true_label(ASTNode caller, ASTNode child) {
return getParent().Define_soot_jimple_Stmt_condition_true_label(this, caller);
}
public int Define_int_localNum(ASTNode caller, ASTNode child) {
return getParent().Define_int_localNum(this, caller);
}
public boolean Define_boolean_enclosedByExceptionHandler(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_enclosedByExceptionHandler(this, caller);
}
public ArrayList Define_ArrayList_exceptionRanges(ASTNode caller, ASTNode child) {
return getParent().Define_ArrayList_exceptionRanges(this, caller);
}
public CompilationUnit Define_CompilationUnit_compilationUnit(ASTNode caller, ASTNode child) {
return getParent().Define_CompilationUnit_compilationUnit(this, caller);
}
public SimpleSet Define_SimpleSet_allImportedTypes(ASTNode caller, ASTNode child, String name) {
return getParent().Define_SimpleSet_allImportedTypes(this, caller, name);
}
public String Define_String_packageName(ASTNode caller, ASTNode child) {
return getParent().Define_String_packageName(this, caller);
}
public TypeDecl Define_TypeDecl_enclosingType(ASTNode caller, ASTNode child) {
return getParent().Define_TypeDecl_enclosingType(this, caller);
}
public boolean Define_boolean_isNestedType(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_isNestedType(this, caller);
}
public boolean Define_boolean_isLocalClass(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_isLocalClass(this, caller);
}
public String Define_String_hostPackage(ASTNode caller, ASTNode child) {
return getParent().Define_String_hostPackage(this, caller);
}
public boolean Define_boolean_reachable(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_reachable(this, caller);
}
public boolean Define_boolean_reachableCatchClause(ASTNode caller, ASTNode child) {
return getParent().Define_boolean_reachableCatchClause(this, caller);
}
}