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.
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 booleanTrue if the assignment node is desugared from an enhanced-for-loop over an array.protected final NodeThe node for the LHS of the assignment tree.protected final NodeThe node for the RHS of the assignment tree.protected final booleanTrue if the assignment node is synthetic.protected final TreeThe 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.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 desugared from an enhanced-for-loop over an array.booleanCheck if the assignment node is synthetic, e.g.voidset 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, 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 syntheticTrue if the assignment node is synthetic. -
desugaredFromEnhancedArrayForLoop
protected boolean desugaredFromEnhancedArrayForLoopTrue if the assignment node is desugared from an enhanced-for-loop over an array.
-
-
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- true if 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
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: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
-