public static class PreciseDataFlow.PreciseCFGBuilder<FlowItem extends polyglot.visit.DataFlow.Item>
extends polyglot.visit.CFGBuilder<FlowItem>
Constructor and Description |
---|
PreciseDataFlow.PreciseCFGBuilder(polyglot.ast.JLang lang,
polyglot.types.TypeSystem ts,
polyglot.visit.FlowGraph<FlowItem> graph,
PreciseDataFlow<FlowItem> df)
Create a new CFG builder
|
Modifier and Type | Method and Description |
---|---|
protected java.util.Collection<ThrowableType> |
approximateThrown(polyglot.ast.Term a,
PreciseDataFlow<FlowItem> pdf)
Approximate the set of exceptions that may be thrown by the
term a as precisely as possible
|
PreciseDataFlow.PreciseCFGBuilder<FlowItem> |
push(java.util.Collection<polyglot.types.ClassType> suppressExceptions,
polyglot.ast.Term suppressTarget)
Swap out the exceptions and target
|
void |
visitThrow(polyglot.ast.Term a) |
void |
visitThrow(polyglot.ast.Term t,
int entry,
ThrowableType tt)
Create edges for an exception thrown from term
t . |
copy, dataflow, edge, edge, edge, edge, edge, edge, enterFinally, entryPeer, errorEdgesToExitNode, exceptionEdgesToFinally, exitPeer, graph, innermostTarget, lang, outer, push, push, skipDeadIfBranches, skipDeadIfBranches, skipDeadLoopBodies, skipDeadLoopBodies, skipInnermostCatches, trackImplicitErrors, tryFinally, tryFinally, typeSystem, visitBranchTarget, visitCFG, visitCFG, visitCFG, visitCFG, visitCFG, visitCFG, visitCFGList, visitGraph, visitReturn, visitThrow
public PreciseDataFlow.PreciseCFGBuilder(polyglot.ast.JLang lang, polyglot.types.TypeSystem ts, polyglot.visit.FlowGraph<FlowItem> graph, PreciseDataFlow<FlowItem> df)
ts
- Polyglot type systemgraph
- dataflow graphdf
- dataflow visitorpublic PreciseDataFlow.PreciseCFGBuilder<FlowItem> push(java.util.Collection<polyglot.types.ClassType> suppressExceptions, polyglot.ast.Term suppressTarget)
suppressExceptions
- new set of expression types to suppresssuppressTarget
- AST node to supress them onPreciseDataFlow.PreciseCFGBuilder
with the given suppressed
exceptions and targetspublic void visitThrow(polyglot.ast.Term a)
visitThrow
in class polyglot.visit.CFGBuilder<FlowItem extends polyglot.visit.DataFlow.Item>
protected java.util.Collection<ThrowableType> approximateThrown(polyglot.ast.Term a, PreciseDataFlow<FlowItem> pdf)
a
- AST node to compute the exceptions forpdf
- dataflowpublic void visitThrow(polyglot.ast.Term t, int entry, ThrowableType tt)
t
.t
- AST nodeentry
- 1 if we are looking at the entry of the termtt
- exception type