Example usage for org.eclipse.jdt.core.dom PrefixExpression getOperand

List of usage examples for org.eclipse.jdt.core.dom PrefixExpression getOperand

Introduction

In this page you can find the example usage for org.eclipse.jdt.core.dom PrefixExpression getOperand.

Prototype

public Expression getOperand() 

Source Link

Document

Returns the operand of this prefix expression.

Usage

From source file:at.bestsolution.fxide.jdt.corext.dom.ASTFlattener.java

License:Open Source License

@Override
public boolean visit(PrefixExpression node) {
    this.fBuffer.append(node.getOperator().toString());
    node.getOperand().accept(this);
    return false;
}

From source file:boa.datagen.util.Java7Visitor.java

License:Apache License

@Override
public boolean visit(PrefixExpression node) {
    boa.types.Ast.Expression.Builder b = boa.types.Ast.Expression.newBuilder();
    //      b.setPosition(pos.build());
    if (node.getOperator() == PrefixExpression.Operator.DECREMENT)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.OP_DEC);
    else if (node.getOperator() == PrefixExpression.Operator.INCREMENT)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.OP_INC);
    else if (node.getOperator() == PrefixExpression.Operator.PLUS)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.OP_ADD);
    else if (node.getOperator() == PrefixExpression.Operator.MINUS)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.OP_SUB);
    else if (node.getOperator() == PrefixExpression.Operator.COMPLEMENT)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.BIT_NOT);
    else if (node.getOperator() == PrefixExpression.Operator.NOT)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.LOGICAL_NOT);
    node.getOperand().accept(this);
    b.addExpressions(expressions.pop());
    expressions.push(b.build());//from   ww  w  .  ja v  a2  s . com
    return false;
}

From source file:ca.mcgill.cs.swevo.ppa.inference.PrefixInferenceStrategy.java

License:Open Source License

public boolean isSafe(ASTNode node) {
    PrefixExpression prefix = (PrefixExpression) node;
    Expression exp = prefix.getOperand();
    return !indexer.isIndexable(exp) || indexer.isSafe(exp);
}

From source file:ca.mcgill.cs.swevo.ppa.inference.PrefixInferenceStrategy.java

License:Open Source License

private void processOperators(PrefixExpression node, TypeFact newFact) {
    ITypeBinding newType = null;//from   ww w .j av  a 2  s  .c  om
    Expression exp = node.getOperand();
    boolean isPrimary = newFact != null && indexer.getMainIndex(node).equals(newFact.getIndex());
    boolean isSafe = indexer.isSafe(exp) || (newFact != null && !isPrimary);

    if (node.getOperator() != PrefixExpression.Operator.NOT) {
        if (isPrimary && !isSafe) {
            ITypeBinding newBinding = newFact.getNewType();
            ITypeBinding oldBinding = exp.resolveTypeBinding();
            TypeFact typeFact = new TypeFact(indexer.getMainIndex(exp), oldBinding, TypeFact.UNKNOWN,
                    newBinding, TypeFact.SUBTYPE, TypeFact.UNARY_STRATEGY);
            ppaEngine.reportTypeFact(typeFact);
            newType = newBinding;
        } else if (!isSafe) {
            ITypeBinding newBinding = ppaEngine.getRegistry().getPrimitiveBinding("int", exp);
            ITypeBinding oldBinding = exp.resolveTypeBinding();
            TypeFact typeFact = new TypeFact(indexer.getMainIndex(exp), oldBinding, TypeFact.UNKNOWN,
                    newBinding, TypeFact.SUBTYPE, TypeFact.UNARY_STRATEGY);
            ppaEngine.reportTypeFact(typeFact);
            newType = newBinding;
        }
    } else if (!isSafe) {
        ITypeBinding newBinding = ppaEngine.getRegistry().getPrimitiveBinding("boolean", exp);
        ITypeBinding oldBinding = exp.resolveTypeBinding();
        TypeFact typeFact = new TypeFact(indexer.getMainIndex(exp), oldBinding, TypeFact.UNKNOWN, newBinding,
                TypeFact.SUBTYPE, TypeFact.UNARY_STRATEGY);
        ppaEngine.reportTypeFact(typeFact);
        newType = newBinding;
    }

    if (newType != null && !isPrimary) {
        ITypeBinding oldBinding = node.resolveTypeBinding();
        TypeFact typeFact = new TypeFact(indexer.getMainIndex(node), oldBinding, TypeFact.UNKNOWN, newType,
                TypeFact.SUBTYPE, TypeFact.BINARY_STRATEGY);
        ppaEngine.reportTypeFact(typeFact);
        // report new type for this expression.
        // fix this expression.
    } else if (isPrimary) {
        if (newType != null) {
            ppaEngine.getRegistry().fixUnary(node, newType);
        } else if (newFact != null) {
            ppaEngine.getRegistry().fixUnary(node, newFact.getNewType());
        }
    }
}

From source file:ca.mcgill.cs.swevo.ppa.inference.PrefixInferenceStrategy.java

License:Open Source License

@Override
public List<PPAIndex> getSecondaryIndexes(ASTNode node) {
    List<PPAIndex> list = super.getSecondaryIndexes(node);
    PrefixExpression prefix = (PrefixExpression) node;
    Expression exp = prefix.getOperand();
    if (indexer.isIndexable(exp)) {
        list.add(indexer.getMainIndex(exp));
    }//w  w  w.  ja  v a 2  s .c  o  m
    return list;
}

From source file:coloredide.utils.CopiedNaiveASTFlattener.java

License:Open Source License

public boolean visit(PrefixExpression node) {
    this.buffer.append(node.getOperator().toString());
    node.getOperand().accept(this);
    return false;
}

From source file:com.bsiag.eclipse.jdt.java.formatter.SpacePreparator.java

License:Open Source License

@Override
public boolean visit(PrefixExpression node) {
    Operator operator = node.getOperator();
    if (operator.equals(Operator.INCREMENT) || operator.equals(Operator.DECREMENT)) {
        handleOperator(operator.toString(), node.getOperand(), this.options.insert_space_before_prefix_operator,
                this.options.insert_space_after_prefix_operator);
    } else {/*from  w ww .j  ava 2  s.  c  o  m*/
        handleOperator(operator.toString(), node.getOperand(), this.options.insert_space_before_unary_operator,
                this.options.insert_space_after_unary_operator);
    }
    return true;
}

From source file:com.google.dart.java2dart.SyntaxTranslator.java

License:Open Source License

@Override
public boolean visit(org.eclipse.jdt.core.dom.PrefixExpression node) {
    Expression operand = translate(node.getOperand());
    // operator// www  .  j av a 2  s.  c  om
    TokenType tokenType = null;
    org.eclipse.jdt.core.dom.PrefixExpression.Operator javaOperator = node.getOperator();
    if (javaOperator == org.eclipse.jdt.core.dom.PrefixExpression.Operator.PLUS) {
        return done(operand);
    }
    if (javaOperator == org.eclipse.jdt.core.dom.PrefixExpression.Operator.INCREMENT) {
        tokenType = TokenType.PLUS_PLUS;
    }
    if (javaOperator == org.eclipse.jdt.core.dom.PrefixExpression.Operator.DECREMENT) {
        tokenType = TokenType.MINUS_MINUS;
    }
    if (javaOperator == org.eclipse.jdt.core.dom.PrefixExpression.Operator.MINUS) {
        tokenType = TokenType.MINUS;
    }
    if (javaOperator == org.eclipse.jdt.core.dom.PrefixExpression.Operator.NOT) {
        tokenType = TokenType.BANG;
    }
    if (javaOperator == org.eclipse.jdt.core.dom.PrefixExpression.Operator.COMPLEMENT) {
        tokenType = TokenType.TILDE;
    }
    Assert.isNotNull(tokenType, "No token for: " + javaOperator);
    // done
    return done(prefixExpression(tokenType, operand));
}

From source file:com.google.devtools.j2cpp.gen.CppStatementGenerator.java

License:Open Source License

@Override
public boolean visit(PrefixExpression node) {
    if (node.getOperand() instanceof ArrayAccess) {
        PrefixExpression.Operator op = node.getOperator();
        if (op == PrefixExpression.Operator.INCREMENT || op == PrefixExpression.Operator.DECREMENT) {
            String methodName = op == PrefixExpression.Operator.INCREMENT ? "incr" : "decr";
            printArrayIncrementOrDecrement((ArrayAccess) node.getOperand(), methodName);
            return false;
        }/*from   w  w w  .jav a2 s  .  co  m*/
    }
    buffer.append(node.getOperator().toString());
    node.getOperand().accept(this);
    return false;
}

From source file:com.google.devtools.j2objc.ast.DebugASTPrinter.java

License:Apache License

@Override
public boolean visit(PrefixExpression node) {
    sb.print(node.getOperator().toString());
    node.getOperand().accept(this);
    return false;
}