public abstract static class NodeTraversal.AbstractModuleCallback extends java.lang.Object implements NodeTraversal.Callback
Modifier and Type | Field and Description |
---|---|
protected AbstractCompiler |
compiler |
Modifier and Type | Method and Description |
---|---|
protected void |
enterModule(ModuleMetadataMap.ModuleMetadata currentModule,
Node moduleScopeRoot)
Called when the traversal enters a global file or module.
|
protected void |
exitModule(ModuleMetadataMap.ModuleMetadata oldModule,
Node moduleScopeRoot)
Called when the traversal exits a global file or module.
|
protected boolean |
shouldTraverse(NodeTraversal t,
Node n,
ModuleMetadataMap.ModuleMetadata currentModule,
Node moduleScopeRoot)
|
boolean |
shouldTraverse(NodeTraversal t,
Node n,
Node parent)
Visits a node in preorder (before its children) and decides whether its children should be
traversed.
|
protected void |
visit(NodeTraversal t,
Node n,
ModuleMetadataMap.ModuleMetadata currentModule,
Node moduleScopeRoot)
|
void |
visit(NodeTraversal t,
Node n,
Node parent)
Visits a node in postorder (after its children).
|
protected final AbstractCompiler compiler
protected void enterModule(ModuleMetadataMap.ModuleMetadata currentModule, Node moduleScopeRoot)
currentModule
- The entered global file or module.moduleScopeRoot
- The root scope for the entered module or SCRIPT for global files.protected void exitModule(ModuleMetadataMap.ModuleMetadata oldModule, Node moduleScopeRoot)
oldModule
- The exited global file or module.moduleScopeRoot
- The root scope for the exited module or SCRIPT for global files.public final boolean shouldTraverse(NodeTraversal t, Node n, Node parent)
NodeTraversal.Callback
NodeTraversal.Callback.shouldTraverse(NodeTraversal, Node, Node)
in preorder and by NodeTraversal.Callback.visit(NodeTraversal,
Node, Node)
in postorder.
Siblings are always visited left-to-right.
Implementations can have side-effects (e.g. modify the parse tree). Removing the current node is legal, but removing or reordering nodes above the current node may cause nodes to be visited twice or not at all.
shouldTraverse
in interface NodeTraversal.Callback
t
- The current traversal.n
- The current node.parent
- The parent of the current node.protected boolean shouldTraverse(NodeTraversal t, Node n, @Nullable ModuleMetadataMap.ModuleMetadata currentModule, @Nullable Node moduleScopeRoot)
t
- The current traversal.n
- The current node.currentModule
- The current module, or null if not inside a module (e.g. AST root).moduleScopeRoot
- The root scope for the current module, or null if not inside a module
(e.g. AST root).public final void visit(NodeTraversal t, Node n, Node parent)
NodeTraversal.Callback
NodeTraversal.Callback.shouldTraverse(NodeTraversal, Node, Node)
returned true for its parent. In particular, the
root node is never visited in postorder.
Siblings are always visited left-to-right.
Implementations can have side-effects (e.g. modify the parse tree). Removing the current node is legal, but removing or reordering nodes above the current node may cause nodes to be visited twice or not at all.
visit
in interface NodeTraversal.Callback
t
- The current traversal.n
- The current node.parent
- The parent of the current node.protected void visit(NodeTraversal t, Node n, @Nullable ModuleMetadataMap.ModuleMetadata currentModule, @Nullable Node moduleScopeRoot)
t
- The current traversal.n
- The current node.currentModule
- The current module, or null if not inside a module (e.g. AST root).moduleScopeRoot
- The root scope for the current module, or null if not inside a module
(e.g. AST root).Copyright © 2009-2020 Google. All Rights Reserved.