private class NameAnalyzer.FindReferences extends java.lang.Object implements NodeTraversal.Callback
Identifies all references between global names.
A reference from a name f
to a name g
means
that if the name f
must be defined, then the name
g
must also be defined. This would be the case if, for
example, f
were a function that called g
.
Modifier and Type | Class and Description |
---|---|
private class |
NameAnalyzer.FindReferences.NodeAccumulator
Helper class that gathers the list of nodes that would be left
behind after simplification.
|
Modifier and Type | Field and Description |
---|---|
(package private) java.util.Set<Node> |
nodesToKeep |
Constructor and Description |
---|
FindReferences() |
Modifier and Type | Method and Description |
---|---|
private void |
addAllChildren(Node n) |
private void |
addSimplifiedChildren(Node n) |
private void |
addSimplifiedExpression(Node n,
Node parent) |
private boolean |
maybeHiddenAlias(Node n)
A value whose result is the return value of a function call
can be an alias to global object.
|
private boolean |
maybeRecordAlias(java.lang.String name,
Node parent,
NameAnalyzer.NameInformation referring,
java.lang.String referringName) |
private void |
maybeRecordReferenceOrAlias(NodeTraversal t,
Node n,
Node parent,
NameAnalyzer.NameInformation nameInfo,
NameAnalyzer.NameInformation referring) |
private void |
recordAliases(java.util.List<NameAnalyzer.NameInformation> referers) |
boolean |
shouldTraverse(NodeTraversal t,
Node n,
Node parent)
Visits a node in pre order (before visiting its children) and decides
whether this node's children should be traversed.
|
void |
visit(NodeTraversal t,
Node n,
Node parent)
Visits a node in postorder (after its children have been visited).
|
java.util.Set<Node> nodesToKeep
private void addAllChildren(Node n)
private void addSimplifiedChildren(Node n)
public boolean shouldTraverse(NodeTraversal t, Node n, Node parent)
NodeTraversal.Callback
Visits a node in pre order (before visiting its children) and decides
whether this node's children should be traversed. If children are
traversed, they will be visited by
NodeTraversal.Callback.visit(NodeTraversal, Node, Node)
in postorder.
Implementations can have side effects (e.g. modifying the parse tree).
shouldTraverse
in interface NodeTraversal.Callback
public void visit(NodeTraversal t, Node n, Node parent)
NodeTraversal.Callback
Visits a node in postorder (after its children have been visited).
A node is visited only if all its parents should be traversed
(NodeTraversal.Callback.shouldTraverse(NodeTraversal, Node, Node)
).
Implementations can have side effects (e.g. modifying the parse tree).
visit
in interface NodeTraversal.Callback
private void maybeRecordReferenceOrAlias(NodeTraversal t, Node n, Node parent, NameAnalyzer.NameInformation nameInfo, NameAnalyzer.NameInformation referring)
private void recordAliases(java.util.List<NameAnalyzer.NameInformation> referers)
private boolean maybeHiddenAlias(Node n)
private boolean maybeRecordAlias(java.lang.String name, Node parent, NameAnalyzer.NameInformation referring, java.lang.String referringName)