public class NotNullDataFlow extends VarContextDataFlow<NotNullAbsVal> implements JL5DataFlowDispatch<VarContext<NotNullAbsVal>>
PreciseDataFlow.PreciseCFGBuilder<FlowItem extends polyglot.visit.DataFlow.Item>polyglot.visit.DataFlow.BoolItem<FlowItem extends polyglot.visit.DataFlow.Item>, polyglot.visit.DataFlow.ConditionNavigator<FlowItem extends polyglot.visit.DataFlow.Item>, polyglot.visit.DataFlow.FlowGraphSource<FlowItem extends polyglot.visit.DataFlow.Item>, polyglot.visit.DataFlow.Frame<FlowItem extends polyglot.visit.DataFlow.Item>, polyglot.visit.DataFlow.ItemDONT_TRACK_BOTTOM, output, WARN_ON_MISSING_EDGES, workQueue| Constructor and Description |
|---|
NotNullDataFlow(NotNullAnalysisUtil autil,
WorkQueue<VarContext<NotNullAbsVal>> wq,
polyglot.frontend.Job job,
polyglot.types.TypeSystem ts,
polyglot.ast.NodeFactory nf) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
check(polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> p)
"Check" the nodes of the graph for the not null analysis.
|
protected void |
check(polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.ast.Term n,
boolean entry,
VarContext<NotNullAbsVal> inItem,
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> outItems) |
protected java.lang.Object |
clone() |
protected VarContext<NotNullAbsVal> |
constructMissingContextForEdgeKey(polyglot.visit.FlowGraph.EdgeKey ek,
FinalVarContext<NotNullAbsVal> f,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
If an edge is missing this method is called to approximate the variable
context
|
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowArrayAccess(polyglot.ast.ArrayAccess n,
VarContext<NotNullAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowAssign(polyglot.ast.Assign n,
VarContext<NotNullAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowBinary(polyglot.ast.Binary n,
VarContext<NotNullAbsVal> dfIn,
VarContext<NotNullAbsVal> trueItem,
VarContext<NotNullAbsVal> falseItem,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowCall(polyglot.ast.Call n,
VarContext<NotNullAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowCast(polyglot.ast.Cast n,
VarContext<NotNullAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowCatch(polyglot.ast.Catch n,
VarContext<NotNullAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowCodeDecl(polyglot.ast.CodeDecl n,
VarContext<NotNullAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowConditional(polyglot.ast.Conditional n,
VarContext<NotNullAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowConstructorCall(polyglot.ast.ConstructorCall n,
VarContext<NotNullAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowEnumConstant(polyglot.ext.jl5.ast.EnumConstant n,
VarContext<NotNullAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowEnumConstantDecl(polyglot.ext.jl5.ast.EnumConstantDecl n,
VarContext<NotNullAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
The following methods provide support for JL5 language features.
|
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowExpr(polyglot.ast.Expr n,
VarContext<NotNullAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowExtendedFor(polyglot.ext.jl5.ast.ExtendedFor n,
VarContext<NotNullAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowField(polyglot.ast.Field n,
VarContext<NotNullAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowFieldDecl(polyglot.ast.FieldDecl n,
VarContext<NotNullAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowFinally(polyglot.ast.Block n,
VarContext<NotNullAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowFormal(polyglot.ast.Formal n,
VarContext<NotNullAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
Compute the dataflow for
n |
protected java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowImpl(VarContext<NotNullAbsVal> trueItem,
VarContext<NotNullAbsVal> falseItem,
VarContext<NotNullAbsVal> otherItem,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer) |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowInstanceof(polyglot.ast.Instanceof n,
VarContext<NotNullAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowLit(polyglot.ast.Lit n,
VarContext<NotNullAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowLocalDecl(polyglot.ast.LocalDecl n,
VarContext<NotNullAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowNew(polyglot.ast.New n,
VarContext<NotNullAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowNewArray(polyglot.ast.NewArray n,
VarContext<NotNullAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowParamTypeNode(polyglot.ext.jl5.ast.ParamTypeNode n,
VarContext<NotNullAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowReturn(polyglot.ast.Return n,
VarContext<NotNullAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowStmt(polyglot.ast.Stmt n,
VarContext<NotNullAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowThrow(polyglot.ast.Throw n,
VarContext<NotNullAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowTry(polyglot.ast.Try n,
VarContext<NotNullAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowTypeNode(polyglot.ast.TypeNode n,
VarContext<NotNullAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
flowUnary(polyglot.ast.Unary n,
VarContext<NotNullAbsVal> dfIn,
VarContext<NotNullAbsVal> trueItem,
VarContext<NotNullAbsVal> falseItem,
polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
Compute the dataflow for
n |
protected static java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> |
itemToMapWithExceptionResults(VarContext<NotNullAbsVal> i,
java.util.Set<polyglot.visit.FlowGraph.EdgeKey> edgeKeys,
polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer) |
argumentsOnResultStack, autil, checkInvariants, confluence, createInitialItem, dataflow, edgeKeyConvert, finalVarContextToDataFlowMap, flow, flow, flowArrayAccessAssign, flowArrayInit, flowAssert, flowBlock, flowBranch, flowConstructorDecl, flowDo, flowEmpty, flowEval, flowFieldAssign, flowIf, flowInitializer, flowLabeled, flowLocal, flowLocalAssign, flowMethodDecl, flowSpecial, flowSuppress, flowSynchronized, flowWhile, ignoreNode, keyConvert, post, postFieldDecl, safeConfluence, setWarnOnEdgesMissingDatacreateCFGBuilder, currentContext, dataFlowNodeIdentifierForPeer, dataFlowNodeIdentifierForPeer, initGraph, peerForDataFlowNodeIdentifierconfluence, constructItemsFromCondition, createFrame, createInitialItem, currentFlowGraph, dataflow, dataflow, dataflow, dumpFlowGraph, enterCall, filterItems, filterItemsExceptionSubclass, filterItemsNonError, filterItemsNonException, findSCCs, flow, flow, flow, flowBooleanConditions, flowToBooleanFlow, hasTrueFalseBranches, initGraph, itemsToMap, itemToMap, lang, leave, leaveCall, safeConfluence, safeConfluencebegin, catchErrors, enter, enterCall, enterError, errorQueue, hasErrors, job, leaveCall, leaveCall, nodeFactory, typeSystembypass, bypass, bypassChildren, override, visitChildrencopy, enter, finish, finish, leave, override, toString, visitEdge, visitEdgeNoOverrideequals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitflowArrayAccessAssign, flowArrayInit, flowAssert, flowBlock, flowBranch, flowConstructorDecl, flowDo, flowEmpty, flowEval, flowFieldAssign, flowIf, flowInitializer, flowLabeled, flowLocal, flowLocalAssign, flowMethodDecl, flowSpecial, flowSuppress, flowSynchronized, flowWhile, ignoreNodepublic NotNullDataFlow(NotNullAnalysisUtil autil, WorkQueue<VarContext<NotNullAbsVal>> wq, polyglot.frontend.Job job, polyglot.types.TypeSystem ts, polyglot.ast.NodeFactory nf)
protected java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowImpl(VarContext<NotNullAbsVal> trueItem, VarContext<NotNullAbsVal> falseItem, VarContext<NotNullAbsVal> otherItem, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
flowImpl in class VarContextDataFlow<NotNullAbsVal>public java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowTypeNode(polyglot.ast.TypeNode n, VarContext<NotNullAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
DataFlowDispatchnflowTypeNode in interface DataFlowDispatch<VarContext<NotNullAbsVal>>flowTypeNode in class VarContextDataFlow<NotNullAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowStmt(polyglot.ast.Stmt n, VarContext<NotNullAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
VarContextDataFlownflowStmt in class VarContextDataFlow<NotNullAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowCatch(polyglot.ast.Catch n, VarContext<NotNullAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
DataFlowDispatchnflowCatch in interface DataFlowDispatch<VarContext<NotNullAbsVal>>flowCatch in class VarContextDataFlow<NotNullAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowTry(polyglot.ast.Try n, VarContext<NotNullAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
DataFlowDispatchnflowTry in interface DataFlowDispatch<VarContext<NotNullAbsVal>>flowTry in class VarContextDataFlow<NotNullAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowFinally(polyglot.ast.Block n, VarContext<NotNullAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
DataFlowDispatchnflowFinally in interface DataFlowDispatch<VarContext<NotNullAbsVal>>flowFinally in class VarContextDataFlow<NotNullAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowExpr(polyglot.ast.Expr n, VarContext<NotNullAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
DataFlowDispatchnflowExpr in interface DataFlowDispatch<VarContext<NotNullAbsVal>>flowExpr in class VarContextDataFlow<NotNullAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowCodeDecl(polyglot.ast.CodeDecl n, VarContext<NotNullAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
VarContextDataFlownflowCodeDecl in class VarContextDataFlow<NotNullAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowField(polyglot.ast.Field n, VarContext<NotNullAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
DataFlowDispatchnflowField in interface DataFlowDispatch<VarContext<NotNullAbsVal>>flowField in class VarContextDataFlow<NotNullAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowReturn(polyglot.ast.Return n, VarContext<NotNullAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
DataFlowDispatchnflowReturn in interface DataFlowDispatch<VarContext<NotNullAbsVal>>flowReturn in class VarContextDataFlow<NotNullAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowThrow(polyglot.ast.Throw n, VarContext<NotNullAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
DataFlowDispatchnflowThrow in interface DataFlowDispatch<VarContext<NotNullAbsVal>>flowThrow in class VarContextDataFlow<NotNullAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowConditional(polyglot.ast.Conditional n, VarContext<NotNullAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
DataFlowDispatchnflowConditional in interface DataFlowDispatch<VarContext<NotNullAbsVal>>flowConditional in class VarContextDataFlow<NotNullAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowLit(polyglot.ast.Lit n, VarContext<NotNullAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
DataFlowDispatchnflowLit in interface DataFlowDispatch<VarContext<NotNullAbsVal>>flowLit in class VarContextDataFlow<NotNullAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowCall(polyglot.ast.Call n, VarContext<NotNullAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
DataFlowDispatchnflowCall in interface DataFlowDispatch<VarContext<NotNullAbsVal>>flowCall in class VarContextDataFlow<NotNullAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowNew(polyglot.ast.New n, VarContext<NotNullAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
DataFlowDispatchnflowNew in interface DataFlowDispatch<VarContext<NotNullAbsVal>>flowNew in class VarContextDataFlow<NotNullAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowNewArray(polyglot.ast.NewArray n, VarContext<NotNullAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
DataFlowDispatchnflowNewArray in interface DataFlowDispatch<VarContext<NotNullAbsVal>>flowNewArray in class VarContextDataFlow<NotNullAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowArrayAccess(polyglot.ast.ArrayAccess n, VarContext<NotNullAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
DataFlowDispatchnflowArrayAccess in interface DataFlowDispatch<VarContext<NotNullAbsVal>>flowArrayAccess in class VarContextDataFlow<NotNullAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurrence of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowConstructorCall(polyglot.ast.ConstructorCall n, VarContext<NotNullAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
DataFlowDispatchnflowConstructorCall in interface DataFlowDispatch<VarContext<NotNullAbsVal>>flowConstructorCall in class VarContextDataFlow<NotNullAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowUnary(polyglot.ast.Unary n, VarContext<NotNullAbsVal> dfIn, VarContext<NotNullAbsVal> trueItem, VarContext<NotNullAbsVal> falseItem, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
DataFlowDispatchnflowUnary in interface DataFlowDispatch<VarContext<NotNullAbsVal>>flowUnary in class VarContextDataFlow<NotNullAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowBinary(polyglot.ast.Binary n, VarContext<NotNullAbsVal> dfIn, VarContext<NotNullAbsVal> trueItem, VarContext<NotNullAbsVal> falseItem, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
DataFlowDispatchnflowBinary in interface DataFlowDispatch<VarContext<NotNullAbsVal>>flowBinary in class VarContextDataFlow<NotNullAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowAssign(polyglot.ast.Assign n, VarContext<NotNullAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
VarContextDataFlownflowAssign in class VarContextDataFlow<NotNullAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowInstanceof(polyglot.ast.Instanceof n, VarContext<NotNullAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
DataFlowDispatchnflowInstanceof in interface DataFlowDispatch<VarContext<NotNullAbsVal>>flowInstanceof in class VarContextDataFlow<NotNullAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowCast(polyglot.ast.Cast n, VarContext<NotNullAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
DataFlowDispatchnflowCast in interface DataFlowDispatch<VarContext<NotNullAbsVal>>flowCast in class VarContextDataFlow<NotNullAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowLocalDecl(polyglot.ast.LocalDecl n, VarContext<NotNullAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
DataFlowDispatchnflowLocalDecl in interface DataFlowDispatch<VarContext<NotNullAbsVal>>flowLocalDecl in class VarContextDataFlow<NotNullAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowFieldDecl(polyglot.ast.FieldDecl n, VarContext<NotNullAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
DataFlowDispatchnflowFieldDecl in interface DataFlowDispatch<VarContext<NotNullAbsVal>>flowFieldDecl in class VarContextDataFlow<NotNullAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowFormal(polyglot.ast.Formal n, VarContext<NotNullAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
DataFlowDispatchnflowFormal in interface DataFlowDispatch<VarContext<NotNullAbsVal>>flowFormal in class VarContextDataFlow<NotNullAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphprotected java.lang.Object clone()
throws java.lang.CloneNotSupportedException
clone in class java.lang.Objectjava.lang.CloneNotSupportedExceptionprotected void check(polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> p) throws polyglot.types.SemanticException
check in class polyglot.visit.DataFlow<VarContext<NotNullAbsVal>>polyglot.types.SemanticExceptionprotected void check(polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.ast.Term n, boolean entry, VarContext<NotNullAbsVal> inItem, java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> outItems) throws polyglot.types.SemanticException
check in class polyglot.visit.DataFlow<VarContext<NotNullAbsVal>>polyglot.types.SemanticExceptionprotected static java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> itemToMapWithExceptionResults(VarContext<NotNullAbsVal> i, java.util.Set<polyglot.visit.FlowGraph.EdgeKey> edgeKeys, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
protected VarContext<NotNullAbsVal> constructMissingContextForEdgeKey(polyglot.visit.FlowGraph.EdgeKey ek, FinalVarContext<NotNullAbsVal> f, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
VarContextDataFlowconstructMissingContextForEdgeKey in class VarContextDataFlow<NotNullAbsVal>ek - edge key of missing edgef - the finalVarContext that we were using.public java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowEnumConstantDecl(polyglot.ext.jl5.ast.EnumConstantDecl n, VarContext<NotNullAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
flowEnumConstantDecl in interface JL5DataFlowDispatch<VarContext<NotNullAbsVal>>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurrence of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowEnumConstant(polyglot.ext.jl5.ast.EnumConstant n, VarContext<NotNullAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
JL5DataFlowDispatchnflowEnumConstant in interface JL5DataFlowDispatch<VarContext<NotNullAbsVal>>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurrence of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowExtendedFor(polyglot.ext.jl5.ast.ExtendedFor n, VarContext<NotNullAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
JL5DataFlowDispatchnflowExtendedFor in interface JL5DataFlowDispatch<VarContext<NotNullAbsVal>>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurrence of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<NotNullAbsVal>> flowParamTypeNode(polyglot.ext.jl5.ast.ParamTypeNode n, VarContext<NotNullAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<NotNullAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<NotNullAbsVal>> peer)
JL5DataFlowDispatchnflowParamTypeNode in interface JL5DataFlowDispatch<VarContext<NotNullAbsVal>>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurrence of the dataflow node in the flowgraph