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.
Numeric compound assignments are desugared to an assignment and a numeric operation.
-
Field Summary
-
Constructor Summary
ConstructorDescriptionAssignmentNode
(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 synthetic, e.g.toString()
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
-
-
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
-
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
-