Package com.google.javascript.jscomp
Class NodeTraversal
- java.lang.Object
-
- com.google.javascript.jscomp.NodeTraversal
-
public class NodeTraversal extends java.lang.Object
NodeTraversal allows an iteration through the nodes in the parse tree, and facilitates the optimizations on the parse tree.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
NodeTraversal.AbstractCfgCallback
An traversal base class that tracks and caches the ControlFlowGraph (CFG) during the traversal.static class
NodeTraversal.AbstractChangedScopeCallback
Callback that fires on changed scopes.static class
NodeTraversal.AbstractModuleCallback
Abstract callback that knows when a global script, goog.provide file, goog.module, goog.loadModule, ES module or CommonJS module is entered or exited.static class
NodeTraversal.AbstractPostOrderCallback
Abstract callback to visit all nodes in postorder.static interface
NodeTraversal.AbstractPostOrderCallbackInterface
Abstract callback to visit all nodes in postorder.static class
NodeTraversal.AbstractPreOrderCallback
Abstract callback to visit all nodes in preorder.static class
NodeTraversal.AbstractScopedCallback
Abstract scoped callback to visit all nodes in postorder.static class
NodeTraversal.AbstractShallowCallback
Abstract callback to visit all nodes but not traverse into function bodies.static class
NodeTraversal.AbstractShallowStatementCallback
Abstract callback to visit all structure and statement nodes but doesn't traverse into functions or expressions.static class
NodeTraversal.Builder
Builderstatic interface
NodeTraversal.Callback
Callback for tree-based traversalsstatic class
NodeTraversal.ExternsSkippingCallback
Abstract callback to visit all non-extern nodes in postorder.static interface
NodeTraversal.ScopedCallback
Callback that also knows about scope changes
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static NodeTraversal.Builder
builder()
AbstractScope<?,?>
getAbstractScope()
Gets the current scope.@Nullable JSChunk
getChunk()
Gets the current input chunk.@Nullable AbstractScope<?,?>
getClosestContainerScope()
@Nullable AbstractScope<?,?>
getClosestHoistScope()
@Nullable Node
getClosestHoistScopeRoot()
AbstractCompiler
getCompiler()
Node
getCurrentNode()
Returns the node currently being traversed.@Nullable Node
getEnclosingFunction()
Examines the functions stack for the last instance of a function node.CompilerInput
getInput()
Gets the current input source.Scope
getScope()
com.google.javascript.jscomp.ScopeCreator
getScopeCreator()
@Nullable Node
getScopeRoot()
Returns the current scope's root.java.lang.String
getSourceName()
Gets the current input source name.TypedScope
getTypedScope()
boolean
inFunctionBlockScope()
Determines whether the traversal is currently in the scope of the block of a function.boolean
inGlobalHoistScope()
Determines whether the hoist scope of the current traversal is global.boolean
inGlobalOrModuleScope()
boolean
inGlobalScope()
Determines whether the traversal is currently in the global scope.boolean
inModuleHoistScope()
Determines whether the hoist scope of the current traversal is global.boolean
inModuleScope()
Determines whether the traversal is currently in a module scope.boolean
isHoistScope()
void
report(Node n, DiagnosticType diagnosticType, java.lang.String... arguments)
Reports a diagnostic (error or warning)void
reportCodeChange()
void
reportCodeChange(Node n)
static void
traverse(AbstractCompiler compiler, Node root, NodeTraversal.Callback cb)
Traverses using the SyntacticScopeCreatorstatic void
traverseRoots(AbstractCompiler compiler, NodeTraversal.Callback cb, Node externs, Node root)
static void
traverseScopeRoots(AbstractCompiler compiler, @Nullable Node root, @Nullable java.util.List<Node> scopeNodes, NodeTraversal.Callback cb, boolean traverseNested)
Traverses *just* the contents of provided scope nodes (and optionally scopes nested within them) but will fall back on traversing the entire AST from root if a null scope nodes list is provided.
-
-
-
Method Detail
-
builder
public static NodeTraversal.Builder builder()
-
traverse
public static void traverse(AbstractCompiler compiler, Node root, NodeTraversal.Callback cb)
Traverses using the SyntacticScopeCreator
-
traverseRoots
public static void traverseRoots(AbstractCompiler compiler, NodeTraversal.Callback cb, Node externs, Node root)
-
traverseScopeRoots
public static void traverseScopeRoots(AbstractCompiler compiler, @Nullable Node root, @Nullable java.util.List<Node> scopeNodes, NodeTraversal.Callback cb, boolean traverseNested)
Traverses *just* the contents of provided scope nodes (and optionally scopes nested within them) but will fall back on traversing the entire AST from root if a null scope nodes list is provided.- Parameters:
root
- If scopeNodes is null, this method will just traverse 'root' instead. If scopeNodes is not null, this parameter is ignored.
-
getCompiler
public AbstractCompiler getCompiler()
-
getSourceName
public java.lang.String getSourceName()
Gets the current input source name.- Returns:
- A string that may be empty, but not null
-
getInput
public CompilerInput getInput()
Gets the current input source.
-
getChunk
public @Nullable JSChunk getChunk()
Gets the current input chunk.
-
getCurrentNode
public Node getCurrentNode()
Returns the node currently being traversed.
-
getEnclosingFunction
public @Nullable Node getEnclosingFunction()
Examines the functions stack for the last instance of a function node. When possible, prefer this method over NodeUtil.getEnclosingFunction() because this in general looks at less nodes.
-
getScopeRoot
public @Nullable Node getScopeRoot()
Returns the current scope's root.
-
getScope
public Scope getScope()
-
getTypedScope
public TypedScope getTypedScope()
-
getAbstractScope
public AbstractScope<?,?> getAbstractScope()
Gets the current scope.
-
isHoistScope
public boolean isHoistScope()
-
getClosestHoistScopeRoot
public @Nullable Node getClosestHoistScopeRoot()
-
getClosestContainerScope
public @Nullable AbstractScope<?,?> getClosestContainerScope()
-
getClosestHoistScope
public @Nullable AbstractScope<?,?> getClosestHoistScope()
-
getScopeCreator
public com.google.javascript.jscomp.ScopeCreator getScopeCreator()
-
inGlobalScope
public boolean inGlobalScope()
Determines whether the traversal is currently in the global scope. Note that this returns false in a global block scope.
-
inModuleScope
public boolean inModuleScope()
Determines whether the traversal is currently in a module scope.
-
inGlobalOrModuleScope
public boolean inGlobalOrModuleScope()
-
inFunctionBlockScope
public boolean inFunctionBlockScope()
Determines whether the traversal is currently in the scope of the block of a function.
-
inGlobalHoistScope
public boolean inGlobalHoistScope()
Determines whether the hoist scope of the current traversal is global.
-
inModuleHoistScope
public boolean inModuleHoistScope()
Determines whether the hoist scope of the current traversal is global.
-
report
public void report(Node n, DiagnosticType diagnosticType, java.lang.String... arguments)
Reports a diagnostic (error or warning)
-
reportCodeChange
public void reportCodeChange()
-
reportCodeChange
public void reportCodeChange(Node n)
-
-