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
Trees.
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
Fields -
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.booleanReturns the right-hand-side of the assignment.Returns the left-hand-side of the assignment.getTree()Returns theTreein the abstract syntax tree, ornullif no corresponding tree exists.inthashCode()booleanCheck 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, toStringDebugMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods 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- theAssignmentTreecorresponding to theAssignmentNodetarget- the lhs oftreeexpression- the rhs oftree
-
AssignmentNode
Create an AssignmentNode.- Parameters:
tree- theAssignmentTreecorresponding to theAssignmentNodetarget- the lhs oftreeexpression- the rhs oftreesynthetic- 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:NodeReturns theTreein the abstract syntax tree, ornullif no corresponding tree exists. For instance, this is the case for anImplicitThisNode. -
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:NodeAccept method of the visitor pattern. -
toString
-
equals
-
hashCode
-
getOperands
Description copied from class:Node- Specified by:
getOperandsin classNode- Returns:
- a collection containing all of the operand
Nodes of thisNode
-