Package com.google.javascript.jscomp

# Class NodeTraversal

java.lang.Object
com.google.javascript.jscomp.NodeTraversal

public class NodeTraversal extends 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.AbstractNodeTypePruningCallback`
Abstract callback to visit a pruned set of nodes.
`static class`
`NodeTraversal.AbstractPostOrderCallback`
Abstract callback to visit all nodes in post order.
`static class`
`NodeTraversal.AbstractScopedCallback`
Abstract scoped callback to visit all nodes in post order.
`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 interface`
`NodeTraversal.Callback`
Callback
`static interface`
`NodeTraversal.ScopedCallback`
Callback that also knows about scope changes

## Field Summary

Fields
Modifier and Type
Field
Description
`static final DiagnosticType`
`NODE_TRAVERSAL_ERROR`

## Constructor Summary

Constructors
Constructor
Description
`NodeTraversal(AbstractCompiler compiler, NodeTraversal.Callback cb)`
Creates a node traversal using the specified callback interface.
`NodeTraversal(AbstractCompiler compiler, NodeTraversal.Callback cb, com.google.javascript.jscomp.ScopeCreator scopeCreator)`
Creates a node traversal using the specified callback interface and the scope creator.

## Method Summary

Modifier and Type
Method
Description
`Compiler`
`getCompiler()`
Gets the compiler.
`com.google.javascript.jscomp.ControlFlowGraph<Node>`
`getControlFlowGraph()`
Gets the control flow graph for the current JS scope.
`Node`
`getCurrentNode()`
Returns the node currently being traversed.
`Node`
`getEnclosingFunction()`
Examines the functions stack for the last instance of a function node.
`CompilerInput`
`getInput()`
Gets the current input source.
`int`
`getLineNumber()`
Gets the current line number, or zero if it cannot be determined.
`JSModule`
`getModule()`
Gets the current input module.
`Scope`
`getScope()`
Gets the current scope.
`Node`
`getScopeRoot()`
Returns the current scope's root.
`String`
`getSourceName()`
Gets the current input source name.
`boolean`
`hasScope()`
`JSError`
`makeError(Node n, CheckLevel level, DiagnosticType type, String... arguments)`
Creates a JSError during NodeTraversal.
`JSError`
`makeError(Node n, DiagnosticType type, String... arguments)`
Creates a JSError during NodeTraversal.
`void`
`report(Node n, DiagnosticType diagnosticType, String... arguments)`
Reports a diagnostic (error or warning)
`static void`
`traverse(AbstractCompiler compiler, Node root, NodeTraversal.Callback cb)`
Traverses a node recursively.
`void`
`traverse(Node root)`
Traverses a parse tree recursively.
`protected void`
`traverseInnerNode(Node node, Node parent, Scope refinedScope)`
Traverses an inner node recursively with a refined scope.
`static void`
`traverseRoots(AbstractCompiler compiler, NodeTraversal.Callback cb, Node... roots)`
`static void`
`traverseRoots(AbstractCompiler compiler, List<Node> roots, NodeTraversal.Callback cb)`
Traverses a list of node trees.
`void`
`traverseRoots(Node... roots)`
`void`
`traverseRoots(List<Node> roots)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### NODE_TRAVERSAL_ERROR

public static final DiagnosticType NODE_TRAVERSAL_ERROR

## Constructor Details

### NodeTraversal

public NodeTraversal(AbstractCompiler compiler, NodeTraversal.Callback cb)
Creates a node traversal using the specified callback interface.

### NodeTraversal

public NodeTraversal(AbstractCompiler compiler, NodeTraversal.Callback cb, com.google.javascript.jscomp.ScopeCreator scopeCreator)
Creates a node traversal using the specified callback interface and the scope creator.

## Method Details

### traverse

public void traverse(Node root)
Traverses a parse tree recursively.

### traverseRoots

public void traverseRoots(Node... roots)

### traverseRoots

public void traverseRoots(List<Node> roots)

### traverseInnerNode

protected void traverseInnerNode(Node node, Node parent, Scope refinedScope)
Traverses an inner node recursively with a refined scope. An inner node may be any node with a non `null` parent (i.e. all nodes except the root).

Parameters:
  `node` - the node to traverse
  `parent` - the node's parent, it may not be `null`
  `refinedScope` - the refined scope of the scope currently at the top of the scope stack or in trivial cases that very scope or `null`

### getCompiler

public Compiler getCompiler()
Gets the compiler.

### getLineNumber

public int getLineNumber()
Gets the current line number, or zero if it cannot be determined. The line number is retrieved lazily as a running time optimization.

### getSourceName

public 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.

### getModule

public JSModule getModule()
Gets the current input module.

### getCurrentNode

public Node getCurrentNode()
Returns the node currently being traversed.

### traverse

public static void traverse(AbstractCompiler compiler, Node root, NodeTraversal.Callback cb)
Traverses a node recursively.

### traverseRoots

public static void traverseRoots(AbstractCompiler compiler, List<Node> roots, NodeTraversal.Callback cb)
Traverses a list of node trees.

### traverseRoots

public static void traverseRoots(AbstractCompiler compiler, NodeTraversal.Callback cb, Node... roots)

### getEnclosingFunction

public Node getEnclosingFunction()
Examines the functions stack for the last instance of a function node.

### getScope

public Scope getScope()
Gets the current scope.

### getControlFlowGraph

public com.google.javascript.jscomp.ControlFlowGraph<Node> getControlFlowGraph()
Gets the control flow graph for the current JS scope.

### getScopeRoot

public Node getScopeRoot()
Returns the current scope's root.

### hasScope

public boolean hasScope()

### report

public void report(Node n, DiagnosticType diagnosticType, String... arguments)
Reports a diagnostic (error or warning)

### makeError

public JSError makeError(Node n, CheckLevel level, DiagnosticType type, String... arguments)
Creates a JSError during NodeTraversal.

Parameters:
  `n` - Determines the line and char position within the source file name
  `type` - The DiagnosticType
  `arguments` - Arguments to be incorporated into the message

### makeError

public JSError makeError(Node n, DiagnosticType type, String... arguments)
Creates a JSError during NodeTraversal.

Parameters:
  `n` - Determines the line and char position within the source file name
  `type` - The DiagnosticType
  `arguments` - Arguments to be incorporated into the message