Package com.google.javascript.jscomp
Class NodeTraversal
- java.lang.Object
-
- com.google.javascript.jscomp.NodeTraversal
-
public class NodeTraversal extends java.lang.ObjectNodeTraversal 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 classNodeTraversal.AbstractCfgCallbackAn traversal base class that tracks and caches the ControlFlowGraph (CFG) during the traversal.static classNodeTraversal.AbstractChangedScopeCallbackCallback that fires on changed scopes.static classNodeTraversal.AbstractModuleCallbackAbstract callback that knows when a global script, goog.provide file, goog.module, goog.loadModule, ES module or CommonJS module is entered or exited.static classNodeTraversal.AbstractPostOrderCallbackAbstract callback to visit all nodes in postorder.static interfaceNodeTraversal.AbstractPostOrderCallbackInterfaceAbstract callback to visit all nodes in postorder.static classNodeTraversal.AbstractPreOrderCallbackAbstract callback to visit all nodes in preorder.static classNodeTraversal.AbstractScopedCallbackAbstract scoped callback to visit all nodes in postorder.static classNodeTraversal.AbstractShallowCallbackAbstract callback to visit all nodes but not traverse into function bodies.static classNodeTraversal.AbstractShallowStatementCallbackAbstract callback to visit all structure and statement nodes but doesn't traverse into functions or expressions.static classNodeTraversal.BuilderBuilderstatic interfaceNodeTraversal.CallbackCallback for tree-based traversalsstatic classNodeTraversal.ExternsSkippingCallbackAbstract callback to visit all non-extern nodes in postorder.static interfaceNodeTraversal.ScopedCallbackCallback that also knows about scope changes
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static NodeTraversal.Builderbuilder()AbstractScope<?,?>getAbstractScope()Gets the current scope.@Nullable JSChunkgetChunk()Gets the current input chunk.@Nullable AbstractScope<?,?>getClosestContainerScope()@Nullable AbstractScope<?,?>getClosestHoistScope()@Nullable NodegetClosestHoistScopeRoot()AbstractCompilergetCompiler()NodegetCurrentNode()Returns the node currently being traversed.@Nullable NodegetEnclosingFunction()Examines the functions stack for the last instance of a function node.CompilerInputgetInput()Gets the current input source.ScopegetScope()com.google.javascript.jscomp.ScopeCreatorgetScopeCreator()@Nullable NodegetScopeRoot()Returns the current scope's root.java.lang.StringgetSourceName()Gets the current input source name.TypedScopegetTypedScope()booleaninFunctionBlockScope()Determines whether the traversal is currently in the scope of the block of a function.booleaninGlobalHoistScope()Determines whether the hoist scope of the current traversal is global.booleaninGlobalOrModuleScope()booleaninGlobalScope()Determines whether the traversal is currently in the global scope.booleaninModuleHoistScope()Determines whether the hoist scope of the current traversal is global.booleaninModuleScope()Determines whether the traversal is currently in a module scope.booleanisHoistScope()voidreport(Node n, DiagnosticType diagnosticType, java.lang.String... arguments)Reports a diagnostic (error or warning)voidreportCodeChange()voidreportCodeChange(Node n)static voidtraverse(AbstractCompiler compiler, Node root, NodeTraversal.Callback cb)Traverses using the SyntacticScopeCreatorstatic voidtraverseRoots(AbstractCompiler compiler, NodeTraversal.Callback cb, Node externs, Node root)static voidtraverseScopeRoots(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)
-
-