A
- type of the abstract value that is tracked.public class AnalysisResult<A extends AbstractValue<A>,S extends Store<S>>
extends java.lang.Object
AnalysisResult
represents the result of a org.checkerframework.dataflow analysis by
providing the abstract values given a node or a tree. Note that it does not
keep track of custom results computed by some analysis.Modifier and Type | Field and Description |
---|---|
protected java.util.HashMap<javax.lang.model.element.Element,A> |
finalLocalValues
Map from (effectively final) local variable elements to their abstract value.
|
protected java.util.IdentityHashMap<Node,A> |
nodeValues
Abstract values of nodes.
|
protected java.util.IdentityHashMap<Block,TransferInput<A,S>> |
stores
The stores before every method call.
|
protected java.util.IdentityHashMap<com.sun.source.tree.Tree,Node> |
treeLookup
Map from AST
Tree s to Node s. |
Constructor and Description |
---|
AnalysisResult()
Initialize empty result.
|
AnalysisResult(java.util.Map<Node,A> nodeValues,
java.util.IdentityHashMap<Block,TransferInput<A,S>> stores,
java.util.IdentityHashMap<com.sun.source.tree.Tree,Node> treeLookup,
java.util.HashMap<javax.lang.model.element.Element,A> finalLocalValues)
Initialize with a given node-value mapping.
|
Modifier and Type | Method and Description |
---|---|
void |
combine(AnalysisResult<A,S> other)
Combine with another analysis result.
|
java.util.HashMap<javax.lang.model.element.Element,A> |
getFinalLocalValues() |
@Nullable Node |
getNodeForTree(com.sun.source.tree.Tree tree) |
S |
getStoreAfter(com.sun.source.tree.Tree tree) |
S |
getStoreBefore(com.sun.source.tree.Tree tree) |
A |
getValue(Node n) |
A |
getValue(com.sun.source.tree.Tree t) |
protected S |
runAnalysisFor(Node node,
boolean before)
Runs the analysis again within the block of
node and returns the
store at the location of node . |
static <A extends AbstractValue<A>,S extends Store<S>> |
runAnalysisFor(Node node,
boolean before,
TransferInput<A,S> transferInput)
Runs the analysis again within the block of
node and returns the
store at the location of node . |
protected final java.util.IdentityHashMap<Node,A extends AbstractValue<A>> nodeValues
protected final java.util.IdentityHashMap<com.sun.source.tree.Tree,Node> treeLookup
Tree
s to Node
s.protected final java.util.HashMap<javax.lang.model.element.Element,A extends AbstractValue<A>> finalLocalValues
protected final java.util.IdentityHashMap<Block,TransferInput<A extends AbstractValue<A>,S extends Store<S>>> stores
public AnalysisResult(java.util.Map<Node,A> nodeValues, java.util.IdentityHashMap<Block,TransferInput<A,S>> stores, java.util.IdentityHashMap<com.sun.source.tree.Tree,Node> treeLookup, java.util.HashMap<javax.lang.model.element.Element,A> finalLocalValues)
public AnalysisResult()
public void combine(AnalysisResult<A,S> other)
public java.util.HashMap<javax.lang.model.element.Element,A> getFinalLocalValues()
public A getValue(Node n)
Node
n
, or null
if
no information is available.public A getValue(com.sun.source.tree.Tree t)
Tree
t
, or null
if
no information is available.public @Nullable Node getNodeForTree(com.sun.source.tree.Tree tree)
Node
for a given Tree
.public S getStoreBefore(com.sun.source.tree.Tree tree)
Tree
.public S getStoreAfter(com.sun.source.tree.Tree tree)
Tree
.protected S runAnalysisFor(Node node, boolean before)
node
and returns the
store at the location of node
. If before
is true, then
the store immediately before the Node
node
is returned.
Otherwise, the store after node
is returned.
If the given Node
cannot be reached (in the control flow graph),
then null
is returned.
public static <A extends AbstractValue<A>,S extends Store<S>> S runAnalysisFor(Node node, boolean before, TransferInput<A,S> transferInput)
node
and returns the
store at the location of node
. If before
is true, then
the store immediately before the Node
node
is returned.
Otherwise, the store after node
is returned.