Class AssignmentNode
java.lang.Object
org.checkerframework.dataflow.cfg.node.Node
org.checkerframework.dataflow.cfg.node.AssignmentNode
- All Implemented Interfaces:
org.plumelib.util.UniqueId
A node for an assignment:
variable = expression variable += expression expression . field = expression expression [ index ] = expressionWe allow assignments without corresponding AST
Tree
s.
Some desugarings create additional assignments to synthetic local variables. Such assignment nodes are marked as synthetic to allow special handling in transfer functions.
String concatenation compound assignments are desugared to an assignment and a string concatenation.
Assignments desugared from an enhanced-for-loop over an array are marked as such for special casing.
Numeric compound assignments are desugared to an assignment and a numeric operation.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected boolean
Whether the assignment node is desugared from an enhanced-for-loop over an array.protected final Node
The node for the LHS of the assignment tree.protected final Node
The node for the RHS of the assignment tree.protected final boolean
Whether the assignment node is syntheticprotected final Tree
The underlying assignment tree. -
Constructor Summary
ConstructorsConstructorDescriptionAssignmentNode
(Tree tree, Node target, Node expression) Create a (non-synthetic) AssignmentNode.AssignmentNode
(Tree tree, Node target, Node expression, boolean synthetic) Create an AssignmentNode. -
Method Summary
Modifier and TypeMethodDescription<R,
P> R accept
(NodeVisitor<R, P> visitor, P p) Accept method of the visitor pattern.boolean
Returns the right-hand-side of the assignment.Returns the left-hand-side of the assignment.getTree()
Returns theTree
in the abstract syntax tree, ornull
if no corresponding tree exists.int
hashCode()
boolean
Check if the assignment node is desugared from an enhanced-for-loop over an array.boolean
Check if the assignment node is synthetic, e.g.void
set the assignment node as desugared from an enhanced-for-loop over an arraytoString()
Methods inherited from class org.checkerframework.dataflow.cfg.node.Node
getBlock, getInSource, getTransitiveOperands, getType, getUid, isLValue, nodeCollectionToString, setBlock, setInSource, setLValue, toStringDebug
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.plumelib.util.UniqueId
getClassAndUid
-
Field Details
-
tree
The underlying assignment tree. -
lhs
The node for the LHS of the assignment tree. -
rhs
The node for the RHS of the assignment tree. -
synthetic
protected final boolean syntheticWhether the assignment node is synthetic -
desugaredFromEnhancedArrayForLoop
protected boolean desugaredFromEnhancedArrayForLoopWhether the assignment node is desugared from an enhanced-for-loop over an array.
-
-
Constructor Details
-
AssignmentNode
Create a (non-synthetic) AssignmentNode.- Parameters:
tree
- theAssignmentTree
corresponding to theAssignmentNode
target
- the lhs oftree
expression
- the rhs oftree
-
AssignmentNode
Create an AssignmentNode.- Parameters:
tree
- theAssignmentTree
corresponding to theAssignmentNode
target
- the lhs oftree
expression
- the rhs oftree
synthetic
- whether the assignment node is synthetic
-
-
Method Details
-
getTarget
Returns the left-hand-side of the assignment.- Returns:
- the left-hand-side of the assignment
-
getExpression
Returns the right-hand-side of the assignment.- Returns:
- the right-hand-side of the assignment
-
getTree
Description copied from class:Node
Returns theTree
in the abstract syntax tree, ornull
if no corresponding tree exists. For instance, this is the case for anImplicitThisNode
. -
isSynthetic
public boolean isSynthetic()Check if the assignment node is synthetic, e.g. the synthetic assignment in a ternary expression.- Returns:
- true if the assignment node is synthetic
-
isDesugaredFromEnhancedArrayForLoop
public boolean isDesugaredFromEnhancedArrayForLoop()Check if the assignment node is desugared from an enhanced-for-loop over an array.- Returns:
- true if the assignment node is desugared
-
setDesugaredFromEnhancedArrayForLoop
public void setDesugaredFromEnhancedArrayForLoop()set the assignment node as desugared from an enhanced-for-loop over an array -
accept
Description copied from class:Node
Accept method of the visitor pattern. -
toString
-
equals
-
hashCode
-
getOperands
Description copied from class:Node
- Specified by:
getOperands
in classNode
- Returns:
- a collection containing all of the operand
Node
s of thisNode
-