Package com.google.javascript.jscomp
Class NodeTraversal.AbstractModuleCallback
- java.lang.Object
-
- com.google.javascript.jscomp.NodeTraversal.AbstractModuleCallback
-
- All Implemented Interfaces:
NodeTraversal.Callback
- Direct Known Subclasses:
CheckMissingRequires
,ClosureCheckModule
- Enclosing class:
- NodeTraversal
public abstract static class NodeTraversal.AbstractModuleCallback extends java.lang.Object implements NodeTraversal.Callback
Abstract callback that knows when a global script, goog.provide file, goog.module, goog.loadModule, ES module or CommonJS module is entered or exited. This includes both whole file modules and bundled modules, as well as files in the global scope.
-
-
Field Summary
Fields Modifier and Type Field Description protected AbstractCompiler
compiler
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method 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, @Nullable ModuleMetadataMap.ModuleMetadata currentModule, @Nullable 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, @Nullable ModuleMetadataMap.ModuleMetadata currentModule, @Nullable Node moduleScopeRoot)
void
visit(NodeTraversal t, Node n, Node parent)
Visits a node in postorder (after its children).
-
-
-
Field Detail
-
compiler
protected final AbstractCompiler compiler
-
-
Method Detail
-
enterModule
protected void enterModule(ModuleMetadataMap.ModuleMetadata currentModule, Node moduleScopeRoot)
Called when the traversal enters a global file or module.- Parameters:
currentModule
- The entered global file or module.moduleScopeRoot
- The root scope for the entered module or SCRIPT for global files.
-
exitModule
protected void exitModule(ModuleMetadataMap.ModuleMetadata oldModule, Node moduleScopeRoot)
Called when the traversal exits a global file or module.- Parameters:
oldModule
- The exited global file or module.moduleScopeRoot
- The root scope for the exited module or SCRIPT for global files.
-
shouldTraverse
public final boolean shouldTraverse(NodeTraversal t, Node n, Node parent)
Description copied from interface:NodeTraversal.Callback
Visits a node in preorder (before its children) and decides whether its children should be traversed. If the children should be traversed, they will be visited byNodeTraversal.Callback.shouldTraverse(NodeTraversal, Node, Node)
in preorder and byNodeTraversal.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.
- Specified by:
shouldTraverse
in interfaceNodeTraversal.Callback
- Parameters:
t
- The current traversal.n
- The current node.parent
- The parent of the current node.- Returns:
- whether the children of this node should be visited
-
shouldTraverse
protected boolean shouldTraverse(NodeTraversal t, Node n, @Nullable ModuleMetadataMap.ModuleMetadata currentModule, @Nullable Node moduleScopeRoot)
- Parameters:
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).- Returns:
- whether the children of this node should be visited
-
visit
public final void visit(NodeTraversal t, Node n, Node parent)
Description copied from interface:NodeTraversal.Callback
Visits a node in postorder (after its children). A node is visited in postorder iffNodeTraversal.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.
- Specified by:
visit
in interfaceNodeTraversal.Callback
- Parameters:
t
- The current traversal.n
- The current node.parent
- The parent of the current node.
-
visit
protected void visit(NodeTraversal t, Node n, @Nullable ModuleMetadataMap.ModuleMetadata currentModule, @Nullable Node moduleScopeRoot)
- Parameters:
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).
-
-