## 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
`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
`static DiagnosticType` | `NODE_TRAVERSAL_ERROR`

Constructor Summary
`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
`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, List<Node> roots, NodeTraversal.Callback cb)` Traverses a list of node trees.
`static void` | `traverseRoots(AbstractCompiler compiler, NodeTraversal.Callback cb, Node... roots)`
`void` | `traverseRoots(List<Node> roots)`
`void` | `traverseRoots(Node... roots)`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### NODE_TRAVERSAL_ERROR

    public static final DiagnosticType NODE_TRAVERSAL_ERROR

Constructor Detail

### 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 Detail

### 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 be 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