Java Code Examples for com.google.javascript.rhino.Node#putBooleanProp()

The following examples show how to use com.google.javascript.rhino.Node#putBooleanProp() . 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: Cardumen_0087_t.java    From coming with MIT License 6 votes vote down vote up
/**
 * Creates a node representing a qualified name.
 *
 * @param name A qualified name (e.g. "foo" or "foo.bar.baz")
 * @return A NAME or GETPROP node
 */
public static Node newQualifiedNameNode(
    CodingConvention convention, String name) {
  int endPos = name.indexOf('.');
  if (endPos == -1) {
    return newName(convention, name);
  }
  Node node = newName(convention, name.substring(0, endPos));
  int startPos;
  do {
    startPos = endPos + 1;
    endPos = name.indexOf('.', startPos);
    String part = (endPos == -1
                   ? name.substring(startPos)
                   : name.substring(startPos, endPos));
    Node propNode = IR.string(part);
    if (convention.isConstantKey(part)) {
      propNode.putBooleanProp(Node.IS_CONSTANT_NAME, true);
    }
    node = IR.getprop(node, propNode);
  } while (endPos != -1);

  return node;
}
 
Example 2
Source File: Cardumen_00200_s.java    From coming with MIT License 6 votes vote down vote up
/**
 * Creates a node representing a qualified name.
 *
 * @param name A qualified name (e.g. "foo" or "foo.bar.baz")
 * @return A NAME or GETPROP node
 */
public static Node newQualifiedNameNode(
    CodingConvention convention, String name) {
  int endPos = name.indexOf('.');
  if (endPos == -1) {
    return newName(convention, name);
  }
  Node node = newName(convention, name.substring(0, endPos));
  int startPos;
  do {
    startPos = endPos + 1;
    endPos = name.indexOf('.', startPos);
    String part = (endPos == -1
                   ? name.substring(startPos)
                   : name.substring(startPos, endPos));
    Node propNode = IR.string(part);
    if (convention.isConstantKey(part)) {
      propNode.putBooleanProp(Node.IS_CONSTANT_NAME, true);
    }
    node = IR.getprop(node, propNode);
  } while (endPos != -1);

  return node;
}
 
Example 3
Source File: Closure_86_NodeUtil_s.java    From coming with MIT License 5 votes vote down vote up
/**
 * A new CALL node with the "FREE_CALL" set based on call target.
 */
static Node newCallNode(Node callTarget, Node... parameters) {
  boolean isFreeCall = isName(callTarget);
  Node call = new Node(Token.CALL, callTarget);
  call.putBooleanProp(Node.FREE_CALL, isFreeCall);
  for (Node parameter : parameters) {
    call.addChildToBack(parameter);
  }
  return call;
}
 
Example 4
Source File: Closure_84_IRFactory_t.java    From coming with MIT License 5 votes vote down vote up
@Override
Node processUnaryExpression(UnaryExpression exprNode) {
  int type = transformTokenType(exprNode.getType());
  Node operand = transform(exprNode.getOperand());
  if (type == Token.NEG && operand.getType() == Token.NUMBER) {
    operand.setDouble(-operand.getDouble());
    return operand;
  } else {
    if (type == Token.INC || type == Token.DEC) {
      if (!validAssignmentTarget(operand)) {
        String msg = (type == Token.INC)
            ? "invalid increment target"
            : "invalid decrement target";
        errorReporter.error(
          msg,
          sourceName,
          operand.getLineno(), "", 0);
      }
    }

    Node node = newNode(type, operand);
    if (exprNode.isPostfix()) {
      node.putBooleanProp(Node.INCRDECR_PROP, true);
    }
    return node;
  }
}
 
Example 5
Source File: jMutRepair_0039_s.java    From coming with MIT License 5 votes vote down vote up
/**
 * Protect side-effect free nodes by making them parameters
 * to a extern function call.  This call will be removed
 * after all the optimizations passes have run.
 */
private void protectSideEffects() {
  if (!problemNodes.isEmpty()) {
    addExtern();
    for (Node n : problemNodes) {
      Node name = IR.name(PROTECTOR_FN).srcref(n);
      name.putBooleanProp(Node.IS_CONSTANT_NAME, true);
      Node replacement = IR.call(name).srcref(n);
      replacement.putBooleanProp(Node.FREE_CALL, true);
      n.getParent().replaceChild(n, replacement);
      replacement.addChildToBack(n);
    }
    compiler.reportCodeChange();
  }
}
 
Example 6
Source File: Closure_81_IRFactory_t.java    From coming with MIT License 5 votes vote down vote up
/**
 * Transforms the given node and then sets its type to Token.STRING if it
 * was Token.NAME. If its type was already Token.STRING, then quotes it.
 * Used for properties, as the old AST uses String tokens, while the new one
 * uses Name tokens for unquoted strings. For example, in
 * var o = {'a' : 1, b: 2};
 * the string 'a' is quoted, while the name b is turned into a string, but
 * unquoted.
 */
private Node transformAsString(AstNode n) {
  Node ret = transform(n);
  if (ret.getType() == Token.STRING) {
    ret.putBooleanProp(Node.QUOTED_PROP, true);
  } else if (ret.getType() == Token.NAME) {
    ret.setType(Token.STRING);
  }
  return ret;
}
 
Example 7
Source File: Cardumen_00200_s.java    From coming with MIT License 5 votes vote down vote up
/**
 * A new CALL node with the "FREE_CALL" set based on call target.
 */
static Node newCallNode(Node callTarget, Node... parameters) {
  boolean isFreeCall = !isGet(callTarget);
  Node call = IR.call(callTarget);
  call.putBooleanProp(Node.FREE_CALL, isFreeCall);
  for (Node parameter : parameters) {
    call.addChildToBack(parameter);
  }
  return call;
}
 
Example 8
Source File: Closure_21_CheckSideEffects_t.java    From coming with MIT License 5 votes vote down vote up
/**
 * Protect side-effect free nodes by making them parameters
 * to a extern function call.  This call will be removed
 * after all the optimizations passes have run.
 */
private void protectSideEffects() {
  if (!problemNodes.isEmpty()) {
    addExtern();
    for (Node n : problemNodes) {
      Node name = IR.name(PROTECTOR_FN).srcref(n);
      name.putBooleanProp(Node.IS_CONSTANT_NAME, true);
      Node replacement = IR.call(name).srcref(n);
      replacement.putBooleanProp(Node.FREE_CALL, true);
      n.getParent().replaceChild(n, replacement);
      replacement.addChildToBack(n);
    }
    compiler.reportCodeChange();
  }
}
 
Example 9
Source File: jKali_0042_s.java    From coming with MIT License 5 votes vote down vote up
private void addExtern() {
  Node name = IR.name(PROTECTOR_FN);
  name.putBooleanProp(Node.IS_CONSTANT_NAME, true);
  Node var = IR.var(name);
  // Add "@noalias" so we can strip the method when AliasExternals is enabled.
  JSDocInfoBuilder builder = new JSDocInfoBuilder(false);
  builder.recordNoAlias();
  var.setJSDocInfo(builder.build(var));
  CompilerInput input = compiler.getSynthesizedExternsInput();
  input.getAstRoot(compiler).addChildrenToBack(var);
  compiler.reportCodeChange();
}
 
Example 10
Source File: Nopol2017_0047_s.java    From coming with MIT License 5 votes vote down vote up
/**
 * Builds a method call based on the the given method name,
 * argument and history.
 *
 * @param methodName Method to call.
 * @param argumentNode Method argument.
 * @param lineno line number in original source.
 * @param charno character offset in original line.
 */
protected final Node buildCallNode(String methodName, Node argumentNode,
                                   int lineno, int charno) {
  Node call = new Node(Token.CALL, lineno, charno);
  call.putBooleanProp(Node.FREE_CALL, true);
  call.addChildToBack(Node.newString(Token.NAME, methodName));
  if (argumentNode != null) {
    call.addChildToBack(argumentNode.cloneTree());
  }
  return call;
}
 
Example 11
Source File: jMutRepair_0022_s.java    From coming with MIT License 5 votes vote down vote up
private void addExtern() {
  Node name = IR.name(PROTECTOR_FN);
  name.putBooleanProp(Node.IS_CONSTANT_NAME, true);
  Node var = IR.var(name);
  // Add "@noalias" so we can strip the method when AliasExternals is enabled.
  JSDocInfoBuilder builder = new JSDocInfoBuilder(false);
  builder.recordNoAlias();
  var.setJSDocInfo(builder.build(var));
  CompilerInput input = compiler.getSynthesizedExternsInput();
  input.getAstRoot(compiler).addChildrenToBack(var);
  compiler.reportCodeChange();
}
 
Example 12
Source File: jKali_0043_t.java    From coming with MIT License 5 votes vote down vote up
private void addExtern() {
  Node name = IR.name(PROTECTOR_FN);
  name.putBooleanProp(Node.IS_CONSTANT_NAME, true);
  Node var = IR.var(name);
  // Add "@noalias" so we can strip the method when AliasExternals is enabled.
  JSDocInfoBuilder builder = new JSDocInfoBuilder(false);
  builder.recordNoAlias();
  var.setJSDocInfo(builder.build(var));
  CompilerInput input = compiler.getSynthesizedExternsInput();
  input.getAstRoot(compiler).addChildrenToBack(var);
  compiler.reportCodeChange();
}
 
Example 13
Source File: jKali_0043_s.java    From coming with MIT License 5 votes vote down vote up
private void addExtern() {
  Node name = IR.name(PROTECTOR_FN);
  name.putBooleanProp(Node.IS_CONSTANT_NAME, true);
  Node var = IR.var(name);
  // Add "@noalias" so we can strip the method when AliasExternals is enabled.
  JSDocInfoBuilder builder = new JSDocInfoBuilder(false);
  builder.recordNoAlias();
  var.setJSDocInfo(builder.build(var));
  CompilerInput input = compiler.getSynthesizedExternsInput();
  input.getAstRoot(compiler).addChildrenToBack(var);
  compiler.reportCodeChange();
}
 
Example 14
Source File: AliasExternals.java    From astor with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Replace uses of a global with its aliased name.
 */
private void replaceGlobalUse(Node globalUse) {
  String globalName = globalUse.getString();
  if (globals.get(globalName).aliasAccessor) {
    globalUse.setString("GLOBAL_" + globalName);

    // None of the aliases are marked as @const.
    // Because we're reusing the original ref node,
    // we need to update it to reflect this.
    globalUse.putBooleanProp(Node.IS_CONSTANT_NAME, false);

    compiler.reportCodeChange();
  }
}
 
Example 15
Source File: Nopol2017_0032_t.java    From coming with MIT License 5 votes vote down vote up
private void addExtern() {
  Node name = IR.name(PROTECTOR_FN);
  name.putBooleanProp(Node.IS_CONSTANT_NAME, true);
  Node var = IR.var(name);
  // Add "@noalias" so we can strip the method when AliasExternals is enabled.
  JSDocInfoBuilder builder = new JSDocInfoBuilder(false);
  builder.recordNoAlias();
  var.setJSDocInfo(builder.build(var));
  CompilerInput input = compiler.getSynthesizedExternsInput();
  input.getAstRoot(compiler).addChildrenToBack(var);
  compiler.reportCodeChange();
}
 
Example 16
Source File: Closure_86_NodeUtil_t.java    From coming with MIT License 5 votes vote down vote up
/**
 * A new CALL node with the "FREE_CALL" set based on call target.
 */
static Node newCallNode(Node callTarget, Node... parameters) {
  boolean isFreeCall = isName(callTarget);
  Node call = new Node(Token.CALL, callTarget);
  call.putBooleanProp(Node.FREE_CALL, isFreeCall);
  for (Node parameter : parameters) {
    call.addChildToBack(parameter);
  }
  return call;
}
 
Example 17
Source File: Closure_80_NodeUtil_s.java    From coming with MIT License 5 votes vote down vote up
private static Node newName(
    CodingConvention convention, String name, int lineno, int charno) {
  Node nameNode = Node.newString(Token.NAME, name, lineno, charno);
  if (convention.isConstant(name)) {
    nameNode.putBooleanProp(Node.IS_CONSTANT_NAME, true);
  }
  return nameNode;
}
 
Example 18
Source File: Cardumen_0087_s.java    From coming with MIT License 4 votes vote down vote up
/**
 * Copy any annotations that follow a named value.
 * @param source
 * @param destination
 */
static void copyNameAnnotations(Node source, Node destination) {
  if (source.getBooleanProp(Node.IS_CONSTANT_NAME)) {
    destination.putBooleanProp(Node.IS_CONSTANT_NAME, true);
  }
}
 
Example 19
Source File: Closure_60_NodeUtil_s.java    From coming with MIT License 4 votes vote down vote up
/**
 * Copy any annotations that follow a named value.
 * @param source
 * @param destination
 */
static void copyNameAnnotations(Node source, Node destination) {
  if (source.getBooleanProp(Node.IS_CONSTANT_NAME)) {
    destination.putBooleanProp(Node.IS_CONSTANT_NAME, true);
  }
}
 
Example 20
Source File: Closure_86_NodeUtil_t.java    From coming with MIT License 3 votes vote down vote up
/**
 * Creates a new node representing an *existing* name, copying over the source
 * location information from the basis node.
 *
 * @param name The name for the new NAME node.
 * @param basisNode The node that represents the name as currently found in
 *     the AST.
 *
 * @return The node created.
 */
static Node newName(
    CodingConvention convention, String name, Node basisNode) {
  Node nameNode = Node.newString(Token.NAME, name);
  if (convention.isConstantKey(name)) {
    nameNode.putBooleanProp(Node.IS_CONSTANT_NAME, true);
  }
  nameNode.copyInformationFrom(basisNode);
  return nameNode;
}