public final class Es6RewriteBlockScopedDeclaration extends NodeTraversal.AbstractPostOrderCallback implements HotSwapCompilerPass
Modifier and Type | Class and Description |
---|---|
private class |
Es6RewriteBlockScopedDeclaration.CollectUndeclaredNames
Record undeclared names and aggressively rename possible references to them.
|
private class |
Es6RewriteBlockScopedDeclaration.LoopClosureTransformer
Transforms let/const declarations captured by loop closures.
|
private class |
Es6RewriteBlockScopedDeclaration.RewriteBlockScopedFunctionDeclaration |
Modifier and Type | Field and Description |
---|---|
private AbstractCompiler |
compiler |
private java.util.Set<Node> |
letConsts |
private static com.google.common.base.Predicate<Node> |
loopPredicate |
private java.util.Map<Node,java.util.Map<java.lang.String,java.lang.String>> |
renameMap |
private java.util.Set<java.lang.String> |
undeclaredNames |
Constructor and Description |
---|
Es6RewriteBlockScopedDeclaration(AbstractCompiler compiler) |
Modifier and Type | Method and Description |
---|---|
void |
hotSwapScript(Node scriptRoot,
Node originalRoot)
Process the JS with root node root.
|
private boolean |
inLoop(Node n)
Whether n is inside a loop.
|
void |
process(Node externs,
Node root)
Process the JS with root node root.
|
private void |
varify() |
void |
visit(NodeTraversal t,
Node n,
Node parent)
Visits a node in postorder (after its children have been visited).
|
shouldTraverse
private final AbstractCompiler compiler
private final java.util.Map<Node,java.util.Map<java.lang.String,java.lang.String>> renameMap
private final java.util.Set<Node> letConsts
private final java.util.Set<java.lang.String> undeclaredNames
private static final com.google.common.base.Predicate<Node> loopPredicate
public Es6RewriteBlockScopedDeclaration(AbstractCompiler compiler)
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
public void process(Node externs, Node root)
CompilerPass
process
in interface CompilerPass
externs
- Top of external JS treeroot
- Top of JS treepublic void hotSwapScript(Node scriptRoot, Node originalRoot)
HotSwapCompilerPass
hotSwapScript
in interface HotSwapCompilerPass
scriptRoot
- Root node corresponding to the file that is modified,
should be of type Token.SCRIPT
.originalRoot
- Root node corresponding to the original version of the
file that is modified. Should be of type token.SCRIPT
.private boolean inLoop(Node n)
private void varify()