protected Expression transformPropertyExpression(PropertyExpression pe) {
    boolean oldInPropertyExpression = inPropertyExpression;
    Expression oldFoundArgs = foundArgs;
    Expression oldFoundConstant = foundConstant;
    inPropertyExpression = true;
    foundArgs = null;
    foundConstant = null;
    Expression objectExpression = transform(pe.getObjectExpression());
    boolean candidate = false;
    if (objectExpression instanceof MethodCallExpression) {
      candidate = ((MethodCallExpression) objectExpression).isImplicitThis();
    }

    if (foundArgs != null && foundConstant != null && candidate) {
      Expression result = findStaticMethodImportFromModule(foundConstant, foundArgs);
      if (result != null) {
        objectExpression = result;
        objectExpression.setSourcePosition(pe);
      }
    }
    inPropertyExpression = oldInPropertyExpression;
    foundArgs = oldFoundArgs;
    foundConstant = oldFoundConstant;
    pe.setObjectExpression(objectExpression);
    return pe;
  }
Пример #2
0
 private BinaryExpression tryOptimizeCharComparison(
     final Expression left, final Expression right, final BinaryExpression bin) {
   int op = bin.getOperation().getType();
   if (isCompareToBoolean(op) || op == COMPARE_EQUAL || op == COMPARE_NOT_EQUAL) {
     Character cLeft = tryCharConstant(left);
     Character cRight = tryCharConstant(right);
     if (cLeft != null || cRight != null) {
       Expression oLeft = cLeft == null ? left : new ConstantExpression(cLeft, true);
       oLeft.setSourcePosition(left);
       Expression oRight = cRight == null ? right : new ConstantExpression(cRight, true);
       oRight.setSourcePosition(right);
       bin.setLeftExpression(oLeft);
       bin.setRightExpression(oRight);
       return bin;
     }
   }
   return null;
 }
  protected Expression transformPropertyExpression(PropertyExpression pe) {
    if (currentMethod != null
        && currentMethod.isStatic()
        && pe.getObjectExpression() instanceof VariableExpression
        && ((VariableExpression) pe.getObjectExpression()).isSuperExpression()) {
      PropertyExpression pexp =
          new PropertyExpression(
              new ClassExpression(currentClass.getSuperClass()), transform(pe.getProperty()));
      pexp.setSourcePosition(pe);
      return pexp;
    }
    boolean oldInPropertyExpression = inPropertyExpression;
    Expression oldFoundArgs = foundArgs;
    Expression oldFoundConstant = foundConstant;
    inPropertyExpression = true;
    foundArgs = null;
    foundConstant = null;
    Expression objectExpression = transform(pe.getObjectExpression());
    boolean candidate = false;
    if (objectExpression instanceof MethodCallExpression) {
      candidate = ((MethodCallExpression) objectExpression).isImplicitThis();
    }

    if (foundArgs != null && foundConstant != null && candidate) {
      Expression result = findStaticMethodImportFromModule(foundConstant, foundArgs);
      if (result != null) {
        objectExpression = result;
        objectExpression.setSourcePosition(pe);
      }
    }
    inPropertyExpression = oldInPropertyExpression;
    foundArgs = oldFoundArgs;
    foundConstant = oldFoundConstant;
    pe.setObjectExpression(objectExpression);
    return pe;
  }
 /**
  * Set the source position of toSet including its property expression if it has one.
  *
  * @param toSet resulting node
  * @param origNode original node
  */
 private void setSourcePosition(Expression toSet, Expression origNode) {
   toSet.setSourcePosition(origNode);
   if (toSet instanceof PropertyExpression) {
     ((PropertyExpression) toSet).getProperty().setSourcePosition(origNode);
   }
 }