Class Node
java.lang.Object
org.checkerframework.dataflow.cfg.node.Node
- All Implemented Interfaces:
 org.plumelib.util.UniqueId
- Direct Known Subclasses:
 AnyPatternNode,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
Nodes 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
FieldsModifier and TypeFieldDescriptionThe basic block this node belongs to.static final booleanIf true, print the owner of each field andthis, to disambiguate shadowing.protected booleanDoes this node represent a tree that appears in the source code (true) or one that the CFG builder added while desugaring (false).protected booleanIs this node an l-value?protected final TypeMirrorThe type of this node. - 
Constructor Summary
Constructors - 
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 (ornullif it represents the parameter of a method).booleanReturn 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 theTreein the abstract syntax tree, ornullif no corresponding tree exists.getType()Returns aTypeMirrorrepresenting the type of aNode.longgetUid()booleanisLValue()Is the node an lvalue or not?static StringnodeCollectionToString(Collection<? extends Node> nodes) Returns a verbose string representation of a collection of nodes, useful for debugging..voidSet the basic block this node belongs to.voidsetInSource(boolean inSrc) voidMake 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, waitMethods inherited from interface org.plumelib.util.UniqueId
getClassAndUid 
- 
Field Details
- 
disambiguateOwner
public static final boolean disambiguateOwnerIf true, print the owner of each field andthis, to disambiguate shadowing. This field is intended for debugging.- See Also:
 
 - 
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. ForNodes withTrees, 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:
 getUidin interfaceorg.plumelib.util.UniqueId
 - 
getBlock
Returns the basic block this node belongs to (ornullif it represents the parameter of a method).- Returns:
 - the basic block this node belongs to (or 
nullif it represents the parameter of a method) 
 - 
setBlock
Set the basic block this node belongs to. - 
getTree
Returns theTreein the abstract syntax tree, ornullif no corresponding tree exists. For instance, this is the case for anImplicitThisNode.- Returns:
 - the corresponding 
Treeornull 
 - 
getType
Returns aTypeMirrorrepresenting the type of aNode. ANodewill always have a type even when it has noTree.- Returns:
 - a 
TypeMirrorrepresenting 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
 
 
 -