Class 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.
    • Field Detail

      • NODE_TRAVERSAL_ERROR

        public static final DiagnosticType NODE_TRAVERSAL_ERROR
    • Constructor Detail

      • 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​(java.util.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 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.
      • getModule

        public JSModule getModule()
        Gets the current input module.
      • getCurrentNode

        public Node getCurrentNode()
        Returns the node currently being traversed.
      • 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,
                           java.lang.String... arguments)
        Reports a diagnostic (error or warning)
      • makeError

        public JSError makeError​(Node n,
                                 CheckLevel level,
                                 DiagnosticType type,
                                 java.lang.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,
                                 java.lang.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