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 ASTTree
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
Fields Modifier and Type Field Description protected Node
lhs
The node for the LHS of the assignment tree.protected Node
rhs
The node for the RHS of the assignment tree.protected boolean
synthetic
Whether the assignment node is syntheticprotected com.sun.source.tree.Tree
tree
The 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.boolean
equals(@Nullable java.lang.Object obj)
Node
getExpression()
Returns the right-hand-side of the assignment.java.util.Collection<Node>
getOperands()
Node
getTarget()
Returns the left-hand-side of the assignment.com.sun.source.tree.Tree
getTree()
Returns theTree
in the abstract syntax tree, ornull
if no corresponding tree exists.int
hashCode()
boolean
isSynthetic()
Check if the assignment node is synthetic, e.g.java.lang.String
toString()
-
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
- theAssignmentTree
corresponding to theAssignmentNode
target
- the lhs oftree
expression
- the rhs oftree
-
AssignmentNode
public AssignmentNode(com.sun.source.tree.Tree tree, Node target, Node expression, boolean synthetic)
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 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:Node
Returns theTree
in the abstract syntax tree, ornull
if 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:Node
Accept method of the visitor pattern.
-
toString
@Pure public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
equals
@Pure public boolean equals(@Nullable java.lang.Object obj)
- Overrides:
equals
in classjava.lang.Object
-
hashCode
@Pure public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
getOperands
@SideEffectFree public java.util.Collection<Node> getOperands()
Description copied from class:Node
- Specified by:
getOperands
in classNode
- Returns:
- a collection containing all of the operand
Node
s of thisNode
-
-