protected static class CFGBuilder.CFGTranslationPhaseOne extends TreePathScanner<Node,Void>
CFGBuilder.Label
s to positions in the node sequence.
Node
s.
The return type of this scanner is Node
. For expressions, the corresponding node
is returned to allow linking between different nodes.
However, for statements there is usually no single Node
that is created, and thus
no node is returned (rather, null is returned).
Every visit*
method is assumed to add at least one extended node to the list of
nodes (which might only be a jump).
Modifier and Type | Field and Description |
---|---|
protected AnnotationProvider |
annotationProvider |
protected boolean |
assumeAssertionsDisabled
Can assertions be assumed to be disabled?
|
protected boolean |
assumeAssertionsEnabled
Can assertions be assumed to be enabled?
|
protected Map<CFGBuilder.Label,Integer> |
bindings
The bindings of labels to positions (i.e., indices) in the
nodeList . |
protected Map<Name,CFGBuilder.Label> |
breakLabels
Map from AST label Names to CFG
CFGBuilder.Label s for breaks. |
protected @Nullable CFGBuilder.TryFinallyScopeCell |
breakTargetL
Current
CFGBuilder.TryFinallyScopeCell to which a break statement with no label should jump,
or null if there is no valid destination. |
protected Map<Name,CFGBuilder.Label> |
continueLabels
Map from AST label Names to CFG
CFGBuilder.Label s for continues. |
protected @Nullable CFGBuilder.TryFinallyScopeCell |
continueTargetL
Current
CFGBuilder.TryFinallyScopeCell to which a continue statement with no label should
jump, or null if there is no valid destination. |
protected IdentityHashMap<Tree,Set<Node>> |
convertedTreeLookupMap
|
protected List<ClassTree> |
declaredClasses
Class declarations that have been encountered when building the control-flow graph for a
method.
|
protected List<LambdaExpressionTree> |
declaredLambdas
Lambdas encountered when building the control-flow graph for a method, variable
initializer, or initializer.
|
protected VariableTree |
ea
The
VariableTree that indicates whether assertions are enabled or not. |
protected Elements |
elements |
protected ProcessingEnvironment |
env
Annotation processing environment and its associated type and tree utilities.
|
protected CFGBuilder.Label |
exceptionalExitLabel
Special label to identify the exceptional exit.
|
protected Set<Integer> |
leaders
The set of leaders (represented as indices into
nodeList ). |
protected ArrayList<CFGBuilder.ExtendedNode> |
nodeList
The list of extended nodes.
|
protected CFGBuilder.Label |
regularExitLabel
Special label to identify the regular exit.
|
protected @Nullable CFGBuilder.TryFinallyScopeCell |
returnTargetL
Current
CFGBuilder.TryFinallyScopeCell to which a return statement should jump, or null if
there is no valid destination. |
protected TreeBuilder |
treeBuilder |
protected IdentityHashMap<Tree,Set<Node>> |
treeLookupMap
|
protected Trees |
trees |
protected Types |
types |
protected long |
uid |
protected IdentityHashMap<UnaryTree,AssignmentNode> |
unaryAssignNodeLookupMap
Map from AST
UnaryTree s to compound AssignmentNode s. |
Constructor and Description |
---|
CFGTranslationPhaseOne(TreeBuilder treeBuilder,
AnnotationProvider annotationProvider,
boolean assumeAssertionsEnabled,
boolean assumeAssertionsDisabled,
ProcessingEnvironment env) |
Modifier and Type | Method and Description |
---|---|
protected void |
addLabelForNextNode(CFGBuilder.Label l)
Add the label
l to the extended node that will be placed next in the sequence. |
protected void |
addToConvertedLookupMap(Node node)
Add a node in the post-conversion lookup map.
|
protected void |
addToConvertedLookupMap(Tree tree,
Node node)
Add a node in the post-conversion lookup map.
|
protected void |
addToLookupMap(Node node)
Add a node to the lookup map if it not already present.
|
protected void |
addToUnaryAssignLookupMap(UnaryTree tree,
AssignmentNode unaryAssignNode)
Add a unary tree in the compound assign lookup map.
|
protected Node |
assignConvert(Node node,
TypeMirror varType)
Perform assignment conversion so that it can be assigned to a variable of the given type.
|
protected boolean |
assumeAssertionsEnabledFor(AssertTree tree)
Should assertions be assumed to be executed for a given
AssertTree ? False by
default. |
protected Node |
binaryNumericPromotion(Node node,
TypeMirror exprType)
Perform binary numeric promotion on the input node to make it match the expression type.
|
protected TypeMirror |
binaryPromotedType(TypeMirror left,
TypeMirror right)
Compute the type to which two numeric types must be promoted before performing a binary
numeric operation on them.
|
protected Node |
box(Node node)
If the input node is an unboxed primitive type, insert a call to the appropriate valueOf
method, otherwise leave it alone.
|
protected Node |
commonConvert(Node node,
TypeMirror varType,
boolean contextAllowsNarrowing)
Assignment conversion and method invocation conversion are almost identical, except that
assignment conversion allows narrowing.
|
protected Node |
conditionalExprPromotion(Node node,
TypeMirror destType)
Convert an operand of a conditional expression to the type of the whole expression.
|
protected boolean |
conversionRequiresNarrowing(TypeMirror varType,
Node node)
Return whether a conversion from the type of the node to varType requires narrowing.
|
protected List<Node> |
convertCallArguments(ExecutableElement method,
List<? extends ExpressionTree> actualExprs)
Given a method element and as list of argument expressions, return a list of
Node s representing the arguments converted for a call of the method. |
protected VariableTree |
createEnhancedForLoopArrayVariable(ExpressionTree expression,
VariableElement variableElement) |
protected VariableTree |
createEnhancedForLoopIteratorVariable(MethodInvocationTree iteratorCall,
VariableElement variableElement) |
protected void |
extendWithExtendedNode(CFGBuilder.ExtendedNode n)
Extend the list of extended nodes with an extended node.
|
protected void |
extendWithNode(Node node)
Extend the list of extended nodes with a node.
|
protected CFGBuilder.NodeWithExceptionsHolder |
extendWithNodeWithException(Node node,
TypeMirror cause)
Extend the list of extended nodes with a node, where
node might throw the
exception cause . |
protected CFGBuilder.NodeWithExceptionsHolder |
extendWithNodeWithExceptions(Node node,
Set<TypeMirror> causes)
Extend the list of extended nodes with a node, where
node might throw any of the
exception in causes . |
protected VariableTree |
getAssertionsEnabledVariable()
Get a synthetic
VariableTree that indicates whether assertions are enabled or
not. |
protected @Nullable Name |
getLabel(TreePath path)
Returns the label
Name of the leaf in the argument path, or null if the leaf is
not a labeled statement. |
void |
handleArtificialTree(Tree tree)
Perform any actions required when CFG translation creates a new Tree that is not part of
the original AST.
|
protected void |
insertExtendedNodeAfter(CFGBuilder.ExtendedNode n,
Node pred)
Insert
n after the node pred in the list of extended nodes, or append
n if pred is not present. |
protected <T extends Node> |
insertNodeAfter(T node,
Node pred)
Insert
node after pred in the list of extended nodes, or append to the
list if pred is not present. |
protected CFGBuilder.NodeWithExceptionsHolder |
insertNodeWithExceptionsAfter(Node node,
Set<TypeMirror> causes,
Node pred)
Insert a
node that might throw the exceptions in causes after pred in the list of extended nodes, or append to the list if pred is not
present. |
protected boolean |
isNumericOrBoxed(TypeMirror type)
Returns true if the argument type is a numeric primitive or a boxed numeric primitive and
false otherwise.
|
protected Node |
methodInvocationConvert(Node node,
TypeMirror formalType)
Perform method invocation conversion so that the node can be passed as a formal parameter
of the given type.
|
protected Node |
narrow(Node node,
TypeMirror destType)
Perform narrowing conversion on the input node to make it match the destination type.
|
protected Node |
narrowAndBox(Node node,
TypeMirror destType)
Perform narrowing conversion and optionally boxing conversion on the input node to make
it match the destination type.
|
CFGBuilder.PhaseOneResult |
process(CompilationUnitTree root,
UnderlyingAST underlyingAST) |
CFGBuilder.PhaseOneResult |
process(TreePath bodyPath,
UnderlyingAST underlyingAST)
Performs the actual work of phase one.
|
protected Node |
stringConversion(Node node)
Convert the input node to String type, if it isn't already.
|
protected void |
translateAssertWithAssertionsEnabled(AssertTree tree)
Translates an assertion statement to the correct CFG nodes.
|
protected AssignmentNode |
translateAssignment(Tree tree,
Node target,
ExpressionTree rhs)
Translate an assignment.
|
protected AssignmentNode |
translateAssignment(Tree tree,
Node target,
Node expression)
Translate an assignment where the RHS has already been scanned.
|
protected Node |
unaryNumericPromotion(Node node)
Perform unary numeric promotion on the input node.
|
protected Node |
unbox(Node node)
If the input node is a boxed type, unbox it, otherwise leave it alone.
|
protected String |
uniqueName(String prefix) |
Node |
visitAnnotatedType(AnnotatedTypeTree tree,
Void p) |
Node |
visitAnnotation(AnnotationTree tree,
Void p) |
Node |
visitArrayAccess(ArrayAccessTree tree,
Void p) |
Node |
visitArrayType(ArrayTypeTree tree,
Void p) |
Node |
visitAssert(AssertTree tree,
Void p) |
Node |
visitAssignment(AssignmentTree tree,
Void p) |
Node |
visitBinary(BinaryTree tree,
Void p) |
Node |
visitBlock(BlockTree tree,
Void p) |
Node |
visitBreak(BreakTree tree,
Void p) |
Node |
visitCase(CaseTree tree,
Void p) |
Node |
visitCatch(CatchTree tree,
Void p) |
Node |
visitClass(ClassTree tree,
Void p) |
Node |
visitCompilationUnit(CompilationUnitTree tree,
Void p) |
Node |
visitCompoundAssignment(CompoundAssignmentTree tree,
Void p) |
Node |
visitConditionalExpression(ConditionalExpressionTree tree,
Void p) |
Node |
visitContinue(ContinueTree tree,
Void p) |
Node |
visitDoWhileLoop(DoWhileLoopTree tree,
Void p) |
Node |
visitEmptyStatement(EmptyStatementTree tree,
Void p) |
Node |
visitEnhancedForLoop(EnhancedForLoopTree tree,
Void p) |
Node |
visitErroneous(ErroneousTree tree,
Void p) |
Node |
visitExpressionStatement(ExpressionStatementTree tree,
Void p) |
Node |
visitForLoop(ForLoopTree tree,
Void p) |
Node |
visitIdentifier(IdentifierTree tree,
Void p) |
Node |
visitIf(IfTree tree,
Void p) |
Node |
visitImport(ImportTree tree,
Void p) |
Node |
visitInstanceOf(InstanceOfTree tree,
Void p) |
Node |
visitLabeledStatement(LabeledStatementTree tree,
Void p) |
Node |
visitLambdaExpression(LambdaExpressionTree tree,
Void p) |
Node |
visitLiteral(LiteralTree tree,
Void p) |
Node |
visitMemberReference(MemberReferenceTree tree,
Void p) |
Node |
visitMemberSelect(MemberSelectTree tree,
Void p) |
Node |
visitMethod(MethodTree tree,
Void p) |
MethodInvocationNode |
visitMethodInvocation(MethodInvocationTree tree,
Void p) |
Node |
visitModifiers(ModifiersTree tree,
Void p) |
Node |
visitNewArray(NewArrayTree tree,
Void p) |
Node |
visitNewClass(NewClassTree tree,
Void p) |
Node |
visitOther(Tree tree,
Void p) |
Node |
visitParameterizedType(ParameterizedTypeTree tree,
Void p) |
Node |
visitParenthesized(ParenthesizedTree tree,
Void p) |
Node |
visitPrimitiveType(PrimitiveTypeTree tree,
Void p) |
Node |
visitReturn(ReturnTree tree,
Void p) |
Node |
visitSwitch(SwitchTree tree,
Void p) |
Node |
visitSynchronized(SynchronizedTree tree,
Void p) |
Node |
visitThrow(ThrowTree tree,
Void p) |
Node |
visitTry(TryTree tree,
Void p) |
Node |
visitTypeCast(TypeCastTree tree,
Void p) |
Node |
visitTypeParameter(TypeParameterTree tree,
Void p) |
Node |
visitUnary(UnaryTree tree,
Void p) |
Node |
visitUnionType(UnionTypeTree tree,
Void p) |
Node |
visitVariable(VariableTree tree,
Void p) |
Node |
visitWhileLoop(WhileLoopTree tree,
Void p) |
Node |
visitWildcard(WildcardTree tree,
Void p) |
protected Node |
widen(Node node,
TypeMirror destType)
Perform widening primitive conversion on the input node to make it match the destination
type.
|
protected Tree.Kind |
withoutAssignment(Tree.Kind kind)
Map an operation with assignment to the corresponding operation without assignment.
|
getCurrentPath, scan, scan
reduce, scan, visitExports, visitIntersectionType, visitModule, visitOpens, visitPackage, visitProvides, visitRequires, visitUses
protected final ProcessingEnvironment env
protected final Elements elements
protected final Types types
protected final Trees trees
protected final TreeBuilder treeBuilder
protected final AnnotationProvider annotationProvider
protected final boolean assumeAssertionsDisabled
protected final boolean assumeAssertionsEnabled
protected final CFGBuilder.Label regularExitLabel
protected final CFGBuilder.Label exceptionalExitLabel
protected @Nullable CFGBuilder.TryFinallyScopeCell returnTargetL
CFGBuilder.TryFinallyScopeCell
to which a return statement should jump, or null if
there is no valid destination.protected @Nullable CFGBuilder.TryFinallyScopeCell breakTargetL
CFGBuilder.TryFinallyScopeCell
to which a break statement with no label should jump,
or null if there is no valid destination.protected Map<Name,CFGBuilder.Label> breakLabels
CFGBuilder.Label
s for breaks. Each labeled statement creates
two CFG CFGBuilder.Label
s, one for break and one for continue.protected @Nullable CFGBuilder.TryFinallyScopeCell continueTargetL
CFGBuilder.TryFinallyScopeCell
to which a continue statement with no label should
jump, or null if there is no valid destination.protected Map<Name,CFGBuilder.Label> continueLabels
CFGBuilder.Label
s for continues. Each labeled statement
creates two CFG CFGBuilder.Label
s, one for break and one for continue.protected final IdentityHashMap<Tree,Set<Node>> treeLookupMap
Tree
s to sets of Node
s. Every Tree that produces a value
will have at least one corresponding Node. Trees that undergo conversions, such as boxing
or unboxing, can map to two distinct Nodes. The Node for the pre-conversion value is
stored in the treeLookupMap, while the Node for the post-conversion value is stored in
the convertedTreeLookupMap.protected final IdentityHashMap<Tree,Set<Node>> convertedTreeLookupMap
protected final IdentityHashMap<UnaryTree,AssignmentNode> unaryAssignNodeLookupMap
UnaryTree
s to compound AssignmentNode
s.protected final ArrayList<CFGBuilder.ExtendedNode> nodeList
protected final Map<CFGBuilder.Label,Integer> bindings
nodeList
.protected final Set<Integer> leaders
nodeList
).protected final List<ClassTree> declaredClasses
protected final List<LambdaExpressionTree> declaredLambdas
protected long uid
protected VariableTree ea
VariableTree
that indicates whether assertions are enabled or not.public CFGTranslationPhaseOne(TreeBuilder treeBuilder, AnnotationProvider annotationProvider, boolean assumeAssertionsEnabled, boolean assumeAssertionsDisabled, ProcessingEnvironment env)
treeBuilder
- builder for new AST nodesannotationProvider
- extracts annotations from AST nodesassumeAssertionsDisabled
- can assertions be assumed to be disabled?assumeAssertionsEnabled
- can assertions be assumed to be enabled?env
- annotation processing environment containing type utilitiespublic CFGBuilder.PhaseOneResult process(TreePath bodyPath, UnderlyingAST underlyingAST)
bodyPath
- path to the body of the underlying AST's methodunderlyingAST
- the AST for which the CFG is to be builtpublic CFGBuilder.PhaseOneResult process(CompilationUnitTree root, UnderlyingAST underlyingAST)
public void handleArtificialTree(Tree tree)
tree
- the newly created Treeprotected void addToLookupMap(Node node)
node
- the node to add to the lookup mapprotected void addToConvertedLookupMap(Node node)
node
- the node to add to the lookup mapprotected void addToConvertedLookupMap(Tree tree, Node node)
tree
- the tree used as a key in the mapnode
- the node to add to the lookup mapprotected void addToUnaryAssignLookupMap(UnaryTree tree, AssignmentNode unaryAssignNode)
tree
- the tree used as a key in the mapunaryAssignNode
- the node to add to the lookup mapprotected void extendWithNode(Node node)
node
- the node to addprotected CFGBuilder.NodeWithExceptionsHolder extendWithNodeWithException(Node node, TypeMirror cause)
node
might throw the
exception cause
.node
- the node to addcause
- an exception that the node might throwprotected CFGBuilder.NodeWithExceptionsHolder extendWithNodeWithExceptions(Node node, Set<TypeMirror> causes)
node
might throw any of the
exception in causes
.node
- the node to addcauses
- set of exceptions that the node might throwprotected <T extends Node> T insertNodeAfter(T node, Node pred)
node
after pred
in the list of extended nodes, or append to the
list if pred
is not present.node
- the node to addpred
- the desired predecessor of nodeprotected CFGBuilder.NodeWithExceptionsHolder insertNodeWithExceptionsAfter(Node node, Set<TypeMirror> causes, Node pred)
node
that might throw the exceptions in causes
after pred
in the list of extended nodes, or append to the list if pred
is not
present.node
- the node to addcauses
- set of exceptions that the node might throwpred
- the desired predecessor of nodeprotected void extendWithExtendedNode(CFGBuilder.ExtendedNode n)
n
- the extended nodeprotected void insertExtendedNodeAfter(CFGBuilder.ExtendedNode n, @FindDistinct Node pred)
n
after the node pred
in the list of extended nodes, or append
n
if pred
is not present.n
- the extended nodepred
- the desired predecessorprotected void addLabelForNextNode(CFGBuilder.Label l)
l
to the extended node that will be placed next in the sequence.protected Node box(Node node)
node
- in input nodeprotected Node unbox(Node node)
node
- in input nodeprotected Node stringConversion(Node node)
node
- an input nodeprotected Node unaryNumericPromotion(Node node)
node
- a node producing a value of numeric primitive or boxed typeprotected boolean isNumericOrBoxed(TypeMirror type)
protected TypeMirror binaryPromotedType(TypeMirror left, TypeMirror right)
left
- the type of the left operandright
- the type of the right operandprotected Node binaryNumericPromotion(Node node, TypeMirror exprType)
node
- a node producing a value of numeric primitive or boxed typeexprType
- the type to promote the value toprotected Node widen(Node node, TypeMirror destType)
node
- a node producing a value of numeric primitive typedestType
- the type to widen the value toprotected Node narrow(Node node, TypeMirror destType)
node
- a node producing a value of numeric primitive typedestType
- the type to narrow the value toprotected Node narrowAndBox(Node node, TypeMirror destType)
node
- a node producing a value of numeric primitive typedestType
- the type to narrow the value to (possibly boxed)protected boolean conversionRequiresNarrowing(TypeMirror varType, Node node)
varType
- the type of a variable (or general LHS) to be converted tonode
- a node whose value is being convertedprotected Node commonConvert(Node node, TypeMirror varType, boolean contextAllowsNarrowing)
node
- a Node producing a valuevarType
- the type of a variablecontextAllowsNarrowing
- whether to allow narrowing (for assignment conversion) or
not (for method invocation conversion)protected Node assignConvert(Node node, TypeMirror varType)
node
- a Node producing a valuevarType
- the type of a variableprotected Node methodInvocationConvert(Node node, TypeMirror formalType)
node
- a Node producing a valueformalType
- the type of a formal parameterprotected List<Node> convertCallArguments(ExecutableElement method, List<? extends ExpressionTree> actualExprs)
Node
s representing the arguments converted for a call of the method. This method applies
to both method invocations and constructor calls.method
- an ExecutableElement representing a method to be calledactualExprs
- a List of argument expressions to a callNode
s representing arguments after conversions required by a
call to this methodprotected Node conditionalExprPromotion(Node node, TypeMirror destType)
node
- a node occurring as the second or third operand of a conditional expressiondestType
- the type to promote the value toprotected @Nullable Name getLabel(TreePath path)
Name
of the leaf in the argument path, or null if the leaf is
not a labeled statement.public Node visitAnnotatedType(AnnotatedTypeTree tree, Void p)
visitAnnotatedType
in interface TreeVisitor<Node,Void>
visitAnnotatedType
in class TreeScanner<Node,Void>
public Node visitAnnotation(AnnotationTree tree, Void p)
visitAnnotation
in interface TreeVisitor<Node,Void>
visitAnnotation
in class TreeScanner<Node,Void>
public MethodInvocationNode visitMethodInvocation(MethodInvocationTree tree, Void p)
visitMethodInvocation
in interface TreeVisitor<Node,Void>
visitMethodInvocation
in class TreeScanner<Node,Void>
public Node visitAssert(AssertTree tree, Void p)
visitAssert
in interface TreeVisitor<Node,Void>
visitAssert
in class TreeScanner<Node,Void>
protected boolean assumeAssertionsEnabledFor(AssertTree tree)
AssertTree
? False by
default.protected VariableTree getAssertionsEnabledVariable()
VariableTree
that indicates whether assertions are enabled or
not.protected void translateAssertWithAssertionsEnabled(AssertTree tree)
public Node visitAssignment(AssignmentTree tree, Void p)
visitAssignment
in interface TreeVisitor<Node,Void>
visitAssignment
in class TreeScanner<Node,Void>
protected AssignmentNode translateAssignment(Tree tree, Node target, ExpressionTree rhs)
protected AssignmentNode translateAssignment(Tree tree, Node target, Node expression)
protected Tree.Kind withoutAssignment(Tree.Kind kind)
kind
- a Tree.Kind representing an operation with assignmentpublic Node visitCompoundAssignment(CompoundAssignmentTree tree, Void p)
visitCompoundAssignment
in interface TreeVisitor<Node,Void>
visitCompoundAssignment
in class TreeScanner<Node,Void>
public Node visitBinary(BinaryTree tree, Void p)
visitBinary
in interface TreeVisitor<Node,Void>
visitBinary
in class TreeScanner<Node,Void>
public Node visitBlock(BlockTree tree, Void p)
visitBlock
in interface TreeVisitor<Node,Void>
visitBlock
in class TreeScanner<Node,Void>
public Node visitBreak(BreakTree tree, Void p)
visitBreak
in interface TreeVisitor<Node,Void>
visitBreak
in class TreeScanner<Node,Void>
public Node visitSwitch(SwitchTree tree, Void p)
visitSwitch
in interface TreeVisitor<Node,Void>
visitSwitch
in class TreeScanner<Node,Void>
public Node visitCase(CaseTree tree, Void p)
visitCase
in interface TreeVisitor<Node,Void>
visitCase
in class TreeScanner<Node,Void>
public Node visitCatch(CatchTree tree, Void p)
visitCatch
in interface TreeVisitor<Node,Void>
visitCatch
in class TreeScanner<Node,Void>
public Node visitClass(ClassTree tree, Void p)
visitClass
in interface TreeVisitor<Node,Void>
visitClass
in class TreeScanner<Node,Void>
public Node visitConditionalExpression(ConditionalExpressionTree tree, Void p)
visitConditionalExpression
in interface TreeVisitor<Node,Void>
visitConditionalExpression
in class TreeScanner<Node,Void>
public Node visitContinue(ContinueTree tree, Void p)
visitContinue
in interface TreeVisitor<Node,Void>
visitContinue
in class TreeScanner<Node,Void>
public Node visitDoWhileLoop(DoWhileLoopTree tree, Void p)
visitDoWhileLoop
in interface TreeVisitor<Node,Void>
visitDoWhileLoop
in class TreeScanner<Node,Void>
public Node visitErroneous(ErroneousTree tree, Void p)
visitErroneous
in interface TreeVisitor<Node,Void>
visitErroneous
in class TreeScanner<Node,Void>
public Node visitExpressionStatement(ExpressionStatementTree tree, Void p)
visitExpressionStatement
in interface TreeVisitor<Node,Void>
visitExpressionStatement
in class TreeScanner<Node,Void>
public Node visitEnhancedForLoop(EnhancedForLoopTree tree, Void p)
visitEnhancedForLoop
in interface TreeVisitor<Node,Void>
visitEnhancedForLoop
in class TreeScanner<Node,Void>
protected VariableTree createEnhancedForLoopIteratorVariable(MethodInvocationTree iteratorCall, VariableElement variableElement)
protected VariableTree createEnhancedForLoopArrayVariable(ExpressionTree expression, VariableElement variableElement)
public Node visitForLoop(ForLoopTree tree, Void p)
visitForLoop
in interface TreeVisitor<Node,Void>
visitForLoop
in class TreeScanner<Node,Void>
public Node visitIdentifier(IdentifierTree tree, Void p)
visitIdentifier
in interface TreeVisitor<Node,Void>
visitIdentifier
in class TreeScanner<Node,Void>
public Node visitIf(IfTree tree, Void p)
visitIf
in interface TreeVisitor<Node,Void>
visitIf
in class TreeScanner<Node,Void>
public Node visitImport(ImportTree tree, Void p)
visitImport
in interface TreeVisitor<Node,Void>
visitImport
in class TreeScanner<Node,Void>
public Node visitArrayAccess(ArrayAccessTree tree, Void p)
visitArrayAccess
in interface TreeVisitor<Node,Void>
visitArrayAccess
in class TreeScanner<Node,Void>
public Node visitLabeledStatement(LabeledStatementTree tree, Void p)
visitLabeledStatement
in interface TreeVisitor<Node,Void>
visitLabeledStatement
in class TreeScanner<Node,Void>
public Node visitLiteral(LiteralTree tree, Void p)
visitLiteral
in interface TreeVisitor<Node,Void>
visitLiteral
in class TreeScanner<Node,Void>
public Node visitMethod(MethodTree tree, Void p)
visitMethod
in interface TreeVisitor<Node,Void>
visitMethod
in class TreeScanner<Node,Void>
public Node visitModifiers(ModifiersTree tree, Void p)
visitModifiers
in interface TreeVisitor<Node,Void>
visitModifiers
in class TreeScanner<Node,Void>
public Node visitNewArray(NewArrayTree tree, Void p)
visitNewArray
in interface TreeVisitor<Node,Void>
visitNewArray
in class TreeScanner<Node,Void>
public Node visitNewClass(NewClassTree tree, Void p)
visitNewClass
in interface TreeVisitor<Node,Void>
visitNewClass
in class TreeScanner<Node,Void>
public Node visitParenthesized(ParenthesizedTree tree, Void p)
visitParenthesized
in interface TreeVisitor<Node,Void>
visitParenthesized
in class TreeScanner<Node,Void>
public Node visitReturn(ReturnTree tree, Void p)
visitReturn
in interface TreeVisitor<Node,Void>
visitReturn
in class TreeScanner<Node,Void>
public Node visitMemberSelect(MemberSelectTree tree, Void p)
visitMemberSelect
in interface TreeVisitor<Node,Void>
visitMemberSelect
in class TreeScanner<Node,Void>
public Node visitEmptyStatement(EmptyStatementTree tree, Void p)
visitEmptyStatement
in interface TreeVisitor<Node,Void>
visitEmptyStatement
in class TreeScanner<Node,Void>
public Node visitSynchronized(SynchronizedTree tree, Void p)
visitSynchronized
in interface TreeVisitor<Node,Void>
visitSynchronized
in class TreeScanner<Node,Void>
public Node visitThrow(ThrowTree tree, Void p)
visitThrow
in interface TreeVisitor<Node,Void>
visitThrow
in class TreeScanner<Node,Void>
public Node visitCompilationUnit(CompilationUnitTree tree, Void p)
visitCompilationUnit
in interface TreeVisitor<Node,Void>
visitCompilationUnit
in class TreeScanner<Node,Void>
public Node visitTry(TryTree tree, Void p)
visitTry
in interface TreeVisitor<Node,Void>
visitTry
in class TreeScanner<Node,Void>
public Node visitParameterizedType(ParameterizedTypeTree tree, Void p)
visitParameterizedType
in interface TreeVisitor<Node,Void>
visitParameterizedType
in class TreeScanner<Node,Void>
public Node visitUnionType(UnionTypeTree tree, Void p)
visitUnionType
in interface TreeVisitor<Node,Void>
visitUnionType
in class TreeScanner<Node,Void>
public Node visitArrayType(ArrayTypeTree tree, Void p)
visitArrayType
in interface TreeVisitor<Node,Void>
visitArrayType
in class TreeScanner<Node,Void>
public Node visitTypeCast(TypeCastTree tree, Void p)
visitTypeCast
in interface TreeVisitor<Node,Void>
visitTypeCast
in class TreeScanner<Node,Void>
public Node visitPrimitiveType(PrimitiveTypeTree tree, Void p)
visitPrimitiveType
in interface TreeVisitor<Node,Void>
visitPrimitiveType
in class TreeScanner<Node,Void>
public Node visitTypeParameter(TypeParameterTree tree, Void p)
visitTypeParameter
in interface TreeVisitor<Node,Void>
visitTypeParameter
in class TreeScanner<Node,Void>
public Node visitInstanceOf(InstanceOfTree tree, Void p)
visitInstanceOf
in interface TreeVisitor<Node,Void>
visitInstanceOf
in class TreeScanner<Node,Void>
public Node visitUnary(UnaryTree tree, Void p)
visitUnary
in interface TreeVisitor<Node,Void>
visitUnary
in class TreeScanner<Node,Void>
public Node visitVariable(VariableTree tree, Void p)
visitVariable
in interface TreeVisitor<Node,Void>
visitVariable
in class TreeScanner<Node,Void>
public Node visitWhileLoop(WhileLoopTree tree, Void p)
visitWhileLoop
in interface TreeVisitor<Node,Void>
visitWhileLoop
in class TreeScanner<Node,Void>
public Node visitLambdaExpression(LambdaExpressionTree tree, Void p)
visitLambdaExpression
in interface TreeVisitor<Node,Void>
visitLambdaExpression
in class TreeScanner<Node,Void>
public Node visitMemberReference(MemberReferenceTree tree, Void p)
visitMemberReference
in interface TreeVisitor<Node,Void>
visitMemberReference
in class TreeScanner<Node,Void>
public Node visitWildcard(WildcardTree tree, Void p)
visitWildcard
in interface TreeVisitor<Node,Void>
visitWildcard
in class TreeScanner<Node,Void>
public Node visitOther(Tree tree, Void p)
visitOther
in interface TreeVisitor<Node,Void>
visitOther
in class TreeScanner<Node,Void>