Class AssignmentNode
- java.lang.Object
-
- org.checkerframework.dataflow.cfg.node.Node
-
- org.checkerframework.dataflow.cfg.node.AssignmentNode
-
- All Implemented Interfaces:
org.plumelib.util.UniqueId
public class AssignmentNode extends Node
A node for an assignment:variable = expression variable += expression expression . field = expression expression [ index ] = expression
We allow assignments without corresponding ASTTrees.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 Modifier and Type Field Description protected NodelhsThe node for the LHS of the assignment tree.protected NoderhsThe node for the RHS of the assignment tree.protected booleansyntheticWhether the assignment node is syntheticprotected com.sun.source.tree.TreetreeThe underlying assignment tree.
-
Constructor Summary
Constructors Constructor Description AssignmentNode(com.sun.source.tree.Tree tree, Node target, Node expression)Create a (non-synthetic) AssignmentNode.AssignmentNode(com.sun.source.tree.Tree tree, Node target, Node expression, boolean synthetic)Create an AssignmentNode.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <R,P>
Raccept(NodeVisitor<R,P> visitor, P p)Accept method of the visitor pattern.booleanequals(@Nullable java.lang.Object obj)NodegetExpression()Returns the right-hand-side of the assignment.java.util.Collection<Node>getOperands()NodegetTarget()Returns the left-hand-side of the assignment.com.sun.source.tree.TreegetTree()Returns theTreein the abstract syntax tree, ornullif no corresponding tree exists.inthashCode()booleanisSynthetic()Check if the assignment node is synthetic, e.g.java.lang.StringtoString()-
Methods inherited from class org.checkerframework.dataflow.cfg.node.Node
getBlock, getInSource, getTransitiveOperands, getType, getUid, isLValue, nodeCollectionToString, setBlock, setInSource, setLValue, toStringDebug
-
-
-
-
Field Detail
-
tree
protected final com.sun.source.tree.Tree tree
The underlying assignment tree.
-
lhs
protected final Node lhs
The node for the LHS of the assignment tree.
-
rhs
protected final Node rhs
The node for the RHS of the assignment tree.
-
synthetic
protected final boolean synthetic
Whether the assignment node is synthetic
-
-
Constructor Detail
-
AssignmentNode
public AssignmentNode(com.sun.source.tree.Tree tree, Node target, Node expression)Create a (non-synthetic) AssignmentNode.- Parameters:
tree- theAssignmentTreecorresponding to theAssignmentNodetarget- the lhs oftreeexpression- the rhs oftree
-
AssignmentNode
public AssignmentNode(com.sun.source.tree.Tree tree, Node target, Node expression, boolean synthetic)Create an AssignmentNode.- Parameters:
tree- theAssignmentTreecorresponding to theAssignmentNodetarget- the lhs oftreeexpression- the rhs oftreesynthetic- whether the assignment node is synthetic
-
-
Method Detail
-
getTarget
@Pure public Node getTarget()
Returns the left-hand-side of the assignment.- Returns:
- the left-hand-side of the assignment
-
getExpression
@Pure public Node getExpression()
Returns the right-hand-side of the assignment.- Returns:
- the right-hand-side of the assignment
-
getTree
@Pure public com.sun.source.tree.Tree 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
@Pure 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
public <R,P> R accept(NodeVisitor<R,P> visitor, P p)
Description copied from class:NodeAccept method of the visitor pattern.
-
toString
@Pure public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
equals
@Pure public boolean equals(@Nullable java.lang.Object obj)
- Overrides:
equalsin classjava.lang.Object
-
hashCode
@Pure public int hashCode()
- Overrides:
hashCodein classjava.lang.Object
-
getOperands
@SideEffectFree public java.util.Collection<Node> getOperands()
Description copied from class:Node- Specified by:
getOperandsin classNode- Returns:
- a collection containing all of the operand
Nodes of thisNode
-
-