Class Node
java.lang.Object
org.checkerframework.dataflow.cfg.node.Node
- All Implemented Interfaces:
org.plumelib.util.UniqueId
- Direct Known Subclasses:
ArrayAccessNode
,ArrayCreationNode
,ArrayTypeNode
,AssertionErrorNode
,AssignmentNode
,BinaryOperationNode
,CaseNode
,ClassDeclarationNode
,ClassNameNode
,DeconstructorPatternNode
,ExpressionStatementNode
,FieldAccessNode
,FunctionalInterfaceNode
,InstanceOfNode
,LambdaResultExpressionNode
,LocalVariableNode
,MarkerNode
,MethodAccessNode
,MethodInvocationNode
,NarrowingConversionNode
,NullChkNode
,ObjectCreationNode
,PackageNameNode
,ParameterizedTypeNode
,PrimitiveTypeNode
,ReturnNode
,StringConversionNode
,SuperNode
,SwitchExpressionNode
,SynchronizedNode
,TernaryExpressionNode
,ThisNode
,ThrowNode
,TypeCastNode
,UnaryOperationNode
,ValueLiteralNode
,VariableDeclarationNode
,WideningConversionNode
A node in the abstract representation used for Java code inside a basic block.
The following invariants hold:
block == null || block instanceof RegularBlock || block instanceof ExceptionBlock block != null ⇔ block.getNodes().contains(this)
type != null tree != null ⇒ node.getType() == InternalUtils.typeOf(node.getTree())Note that two
Node
s can be .equals
but represent different CFG nodes. Take care
to use reference equality, maps that handle identity IdentityHashMap
, and sets like
IdentityArraySet
.-
Field Summary
Modifier and TypeFieldDescriptionThe basic block this node belongs to.protected boolean
Does this node represent a tree that appears in the source code (true) or one that the CFG builder added while desugaring (false).protected boolean
Is this node an l-value?protected final TypeMirror
The type of this node. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionabstract <R,
P> R accept
(NodeVisitor<R, P> visitor, P p) Accept method of the visitor pattern.getBlock()
Returns the basic block this node belongs to (ornull
if it represents the parameter of a method).boolean
Return whether this node represents a tree that appears in the source code (true) or one that the CFG or builder added while desugaring (false).abstract Collection
<Node> getTree()
Returns theTree
in the abstract syntax tree, ornull
if no corresponding tree exists.getType()
Returns aTypeMirror
representing the type of aNode
.long
getUid()
boolean
isLValue()
Is the node an lvalue or not?static String
nodeCollectionToString
(Collection<? extends Node> nodes) Returns a verbose string representation of a collection of nodes, useful for debugging..void
Set the basic block this node belongs to.void
setInSource
(boolean inSrc) void
Make this node an l-value.Returns a verbose string representation of this, useful for debugging.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.plumelib.util.UniqueId
getClassAndUid
-
Field Details
-
block
The basic block this node belongs to. If null, this object represents a method formal parameter.Is set by
setBlock(org.checkerframework.dataflow.cfg.block.Block)
. -
lvalue
protected boolean lvalueIs this node an l-value?Is set by
setLValue()
. -
inSource
protected boolean inSourceDoes this node represent a tree that appears in the source code (true) or one that the CFG builder added while desugaring (false).Is set by
setInSource(boolean)
. -
type
The type of this node. ForNode
s withTree
s, this type is the type of theTree
. Otherwise, it is the type is set by theCFGBuilder
.
-
-
Constructor Details
-
Node
Creates a new Node.- Parameters:
type
- the type of the node
-
-
Method Details
-
getUid
- Specified by:
getUid
in interfaceorg.plumelib.util.UniqueId
-
getBlock
Returns the basic block this node belongs to (ornull
if it represents the parameter of a method).- Returns:
- the basic block this node belongs to (or
null
if it represents the parameter of a method)
-
setBlock
Set the basic block this node belongs to. -
getTree
Returns theTree
in the abstract syntax tree, ornull
if no corresponding tree exists. For instance, this is the case for anImplicitThisNode
.- Returns:
- the corresponding
Tree
ornull
-
getType
Returns aTypeMirror
representing the type of aNode
. ANode
will always have a type even when it has noTree
.- Returns:
- a
TypeMirror
representing the type of thisNode
-
accept
Accept method of the visitor pattern.- Type Parameters:
R
- result type of the operationP
- parameter type- Parameters:
visitor
- the visitor to be applied to this nodep
- the parameter for this operation
-
isLValue
Is the node an lvalue or not? -
setLValue
public void setLValue()Make this node an l-value. -
getInSource
Return whether this node represents a tree that appears in the source code (true) or one that the CFG or builder added while desugaring (false).- Returns:
- whether this node represents a tree that appears in the source code
-
setInSource
public void setInSource(boolean inSrc) -
getOperands
-
getTransitiveOperands
-
toStringDebug
Returns a verbose string representation of this, useful for debugging.- Returns:
- a printed representation of this
-
nodeCollectionToString
Returns a verbose string representation of a collection of nodes, useful for debugging..- Parameters:
nodes
- a collection of nodes to format- Returns:
- a printed representation of the given collection
-