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, visitThrowpublic 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