class MakeDeclaredNamesUnique extends java.lang.Object implements NodeTraversal.ScopedCallback
Modifier and Type | Class and Description |
---|---|
(package private) static class |
MakeDeclaredNamesUnique.BoilerplateRenamer
For injecting boilerplate libraries.
|
(package private) static class |
MakeDeclaredNamesUnique.ContextualRenameInverter
Inverts the transformation by
MakeDeclaredNamesUnique.ContextualRenamer , when possible. |
(package private) static class |
MakeDeclaredNamesUnique.ContextualRenamer
Rename every locally name to be unique, the first encountered declaration
(specifically global names) are left in their original form.
|
(package private) static class |
MakeDeclaredNamesUnique.InlineRenamer
Rename every declared name to be unique.
|
(package private) static interface |
MakeDeclaredNamesUnique.Renamer
Declared names renaming policy interface.
|
(package private) static class |
MakeDeclaredNamesUnique.WhitelistedRenamer
Only rename things that match the whitelist.
|
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
ARGUMENTS |
private java.util.Deque<MakeDeclaredNamesUnique.Renamer> |
nameStack |
private MakeDeclaredNamesUnique.Renamer |
rootRenamer |
Constructor and Description |
---|
MakeDeclaredNamesUnique() |
MakeDeclaredNamesUnique(MakeDeclaredNamesUnique.Renamer renamer) |
Modifier and Type | Method and Description |
---|---|
void |
enterScope(NodeTraversal t)
Called immediately after entering a new scope.
|
void |
exitScope(NodeTraversal t)
Called immediately before exiting a scope.
|
private void |
findDeclaredNames(Node n,
Node parent,
MakeDeclaredNamesUnique.Renamer renamer)
Traverses the current scope and collects declared names.
|
(package private) static CompilerPass |
getContextualRenameInverter(AbstractCompiler compiler) |
private java.lang.String |
getReplacementName(java.lang.String oldName)
Walks the stack of name maps and finds the replacement name for the
current scope.
|
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).
|
public static final java.lang.String ARGUMENTS
private final java.util.Deque<MakeDeclaredNamesUnique.Renamer> nameStack
private final MakeDeclaredNamesUnique.Renamer rootRenamer
MakeDeclaredNamesUnique()
MakeDeclaredNamesUnique(MakeDeclaredNamesUnique.Renamer renamer)
static CompilerPass getContextualRenameInverter(AbstractCompiler compiler)
public void enterScope(NodeTraversal t)
NodeTraversal.ScopedCallback
enterScope
in interface NodeTraversal.ScopedCallback
public void exitScope(NodeTraversal t)
NodeTraversal.ScopedCallback
exitScope
in interface NodeTraversal.ScopedCallback
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 java.lang.String getReplacementName(java.lang.String oldName)
private void findDeclaredNames(Node n, Node parent, MakeDeclaredNamesUnique.Renamer renamer)