com.google.javascript.jscomp.NodeTraversal.AbstractPostOrderCallback Java Examples

The following examples show how to use com.google.javascript.jscomp.NodeTraversal.AbstractPostOrderCallback. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: VariableVisibilityAnalysisTest.java    From astor with GNU General Public License v2.0 6 votes vote down vote up
private Node searchForParameter(final String parameterName) {
  Preconditions.checkArgument(parameterName != null);

  final Node[] foundNode = new Node[1];

  AbstractPostOrderCallback findParameter = new AbstractPostOrderCallback() {

    @Override
    public void visit(NodeTraversal t, Node n, Node parent) {
      if (n.getParent().isParamList()
          && parameterName.equals(n.getString())) {

        foundNode[0] = n;
      }
    }
  };

  new NodeTraversal(lastCompiler, findParameter)
      .traverse(lastCompiler.jsRoot);

  return foundNode[0];
}
 
Example #2
Source File: VariableVisibilityAnalysisTest.java    From astor with GNU General Public License v2.0 6 votes vote down vote up
private Node searchForFunction(final String functionName) {
  Preconditions.checkArgument(functionName != null);

  final Node[] foundNode = new Node[1];

  AbstractPostOrderCallback findFunction = new AbstractPostOrderCallback() {

    @Override
    public void visit(NodeTraversal t, Node n, Node parent) {
      if (n.isFunction()
          && functionName.equals(NodeUtil.getFunctionName(n))) {
        foundNode[0] = n;
      }
    }
  };

  new NodeTraversal(lastCompiler, findFunction)
      .traverse(lastCompiler.jsRoot);

  return foundNode[0];
}
 
Example #3
Source File: CallGraph.java    From astor with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Creates {@link Function}s and {@link Callsite}s in a single
 * AST traversal.
 */
private void createFunctionsAndCallsites(Node jsRoot,
    final DefinitionProvider provider) {
  // Create fake function representing global execution
  mainFunction = createFunction(jsRoot);

  NodeTraversal.traverse(compiler, jsRoot, new AbstractPostOrderCallback() {
    @Override
    public void visit(NodeTraversal t, Node n, Node parent) {
      int nodeType = n.getType();

      if (nodeType == Token.CALL || nodeType == Token.NEW) {
        Callsite callsite = createCallsite(n);

        Node containingFunctionNode = t.getScopeRoot();

        Function containingFunction =
            functionsByNode.get(containingFunctionNode);

        if (containingFunction == null) {
          containingFunction = createFunction(containingFunctionNode);
        }
        callsite.containingFunction = containingFunction;
        containingFunction.addCallsiteInFunction(callsite);

        connectCallsiteToTargets(callsite, provider);

      } else if (n.isFunction()) {
        if (!functionsByNode.containsKey(n)) {
          createFunction(n);
        }
      }
    }
  });
}
 
Example #4
Source File: NormalizeTest.java    From astor with GNU General Public License v2.0 5 votes vote down vote up
private Set<Node> findNodesWithProperty(Node root, final int prop) {
  final Set<Node> set = Sets.newHashSet();
  NodeTraversal.traverse(
      getLastCompiler(), root, new AbstractPostOrderCallback() {
      @Override
      public void visit(NodeTraversal t, Node node, Node parent) {
        if (node.getBooleanProp(prop)) {
          set.add(node);
        }
      }
    });
  return set;
}
 
Example #5
Source File: VarCheckTest.java    From astor with GNU General Public License v2.0 5 votes vote down vote up
@Override
public void process(Node externs, Node root) {
  NodeTraversal.traverseRoots(compiler, Lists.newArrayList(externs, root),
      new AbstractPostOrderCallback() {
    @Override
    public void visit(NodeTraversal t, Node n, Node parent) {
      if (n.isName() && !parent.isFunction()
          && !parent.isLabel()) {
        assertTrue("Variable " + n.getString() + " should have be declared",
            t.getScope().isDeclared(n.getString(), true));
      }
    }
  });
}