Example usage for org.eclipse.jdt.core.dom Assignment getLeftHandSide

List of usage examples for org.eclipse.jdt.core.dom Assignment getLeftHandSide

Introduction

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

Prototype

public Expression getLeftHandSide() 

Source Link

Document

Returns the left hand side of this assignment expression.

Usage

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

License:Open Source License

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

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

License:Apache License

@Override
public boolean visit(Assignment node) {
    boa.types.Ast.Expression.Builder b = boa.types.Ast.Expression.newBuilder();
    //      b.setPosition(pos.build());
    node.getLeftHandSide().accept(this);
    b.addExpressions(expressions.pop());
    node.getRightHandSide().accept(this);
    b.addExpressions(expressions.pop());
    if (node.getOperator() == Assignment.Operator.ASSIGN)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.ASSIGN);
    else if (node.getOperator() == Assignment.Operator.BIT_AND_ASSIGN)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.ASSIGN_BITAND);
    else if (node.getOperator() == Assignment.Operator.BIT_OR_ASSIGN)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.ASSIGN_BITOR);
    else if (node.getOperator() == Assignment.Operator.BIT_XOR_ASSIGN)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.ASSIGN_BITXOR);
    else if (node.getOperator() == Assignment.Operator.DIVIDE_ASSIGN)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.ASSIGN_DIV);
    else if (node.getOperator() == Assignment.Operator.LEFT_SHIFT_ASSIGN)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.ASSIGN_LSHIFT);
    else if (node.getOperator() == Assignment.Operator.MINUS_ASSIGN)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.ASSIGN_SUB);
    else if (node.getOperator() == Assignment.Operator.PLUS_ASSIGN)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.ASSIGN_ADD);
    else if (node.getOperator() == Assignment.Operator.REMAINDER_ASSIGN)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.ASSIGN_MOD);
    else if (node.getOperator() == Assignment.Operator.RIGHT_SHIFT_SIGNED_ASSIGN)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.ASSIGN_RSHIFT);
    else if (node.getOperator() == Assignment.Operator.RIGHT_SHIFT_UNSIGNED_ASSIGN)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.ASSIGN_UNSIGNEDRSHIFT);
    else if (node.getOperator() == Assignment.Operator.TIMES_ASSIGN)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.ASSIGN_MULT);
    expressions.push(b.build());//w  ww . j a  va  2 s  . com
    return false;
}

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

License:Open Source License

private boolean isLeftSafe(ASTNode node) {
    boolean leftSafe = true;
    Assignment assign = (Assignment) node;
    Expression left = assign.getLeftHandSide();
    if (indexer.isIndexable(left)) {
        leftSafe = indexer.isSafe(left);
    }/*from w  ww .j a va 2s. c om*/
    return leftSafe;
}

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

License:Open Source License

public void inferTypes(ASTNode node) {
    Assignment assign = (Assignment) node;
    Expression left = assign.getLeftHandSide();
    Expression right = assign.getRightHandSide();
    ITypeBinding leftBinding = PPABindingsUtil.getTypeBinding(left);
    ITypeBinding rightBinding = PPABindingsUtil.getTypeBinding(right);

    boolean isLeftSafe = isLeftSafe(node);
    boolean isRightSafe = isRightSafe(node);
    int leftValue = PPABindingsUtil.getSafetyValue(leftBinding);
    int rightValue = PPABindingsUtil.getSafetyValue(rightBinding);

    if ((isLeftSafe && isRightSafe) || (leftValue == rightValue)) {
        return;/*w  w  w.  j a v  a  2s  .c o  m*/
    } else if (!isRightSafe && leftValue > rightValue) {
        TypeFact tFact = new TypeFact(indexer.getMainIndex(right), rightBinding, TypeFact.UNKNOWN, leftBinding,
                TypeFact.SUBTYPE, TypeFact.ASSIGN_STRATEGY);
        ppaEngine.reportTypeFact(tFact);
    } else if (!isLeftSafe && rightValue > leftValue) {
        TypeFact tFact = new TypeFact(indexer.getMainIndex(left), leftBinding, TypeFact.UNKNOWN, rightBinding,
                TypeFact.SUPERTYPE, TypeFact.ASSIGN_STRATEGY);
        ppaEngine.reportTypeFact(tFact);
    }
}

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

License:Open Source License

public boolean isSafe(ASTNode node) {
    Assignment assign = (Assignment) node;
    boolean leftSafe = true;
    boolean rightSafe = true;

    Expression left = assign.getLeftHandSide();
    Expression right = assign.getRightHandSide();

    leftSafe = indexer.isSafe(left);//from  w w w  .  j a v a2 s  . c o m

    rightSafe = indexer.isSafe(right);

    return leftSafe && rightSafe;
}

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

License:Open Source License

public List<PPAIndex> getSecondaryIndexes(ASTNode node) {
    Assignment assign = (Assignment) node;
    List<PPAIndex> indexes = new ArrayList<PPAIndex>();

    Expression left = assign.getLeftHandSide();
    Expression right = assign.getRightHandSide();

    if (indexer.isIndexable(left)) {
        PPAIndex tempIndex = indexer.getMainIndex(left);
        indexes.add(tempIndex);//from  w w w.  j  av  a2s. co  m
    }

    if (indexer.isIndexable(right)) {
        PPAIndex tempIndex = indexer.getMainIndex(right);
        indexes.add(tempIndex);
    }

    return indexes;
}

From source file:coloredide.utils.CopiedNaiveASTFlattener.java

License:Open Source License

public boolean visit(Assignment node) {
    node.getLeftHandSide().accept(this);
    this.buffer.append(node.getOperator().toString());
    node.getRightHandSide().accept(this);
    return false;
}

From source file:com.android.ide.eclipse.adt.internal.refactorings.extractstring.ReplaceStringsVisitor.java

License:Open Source License

/**
 * Examines if the StringLiteral is part of a assignment to a variable that
 * is a string. We need to lookup the variable to find its type, either in the
 * enclosing method or class type.//from  w w  w.  ja  v a 2  s. c  o  m
 */
private boolean examineAssignment(StringLiteral node) {

    Assignment assignment = findParentClass(node, Assignment.class);
    if (assignment != null) {
        Expression left = assignment.getLeftHandSide();

        ITypeBinding typeBinding = left.resolveTypeBinding();
        return isJavaString(typeBinding);
    }

    return false;
}

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

License:Open Source License

@Override
public boolean visit(org.eclipse.jdt.core.dom.Assignment node) {
    Expression left = translate(node.getLeftHandSide());
    Expression right = translate(node.getRightHandSide());
    // operator//from  ww w  .  jav a  2 s. c o m
    TokenType tokenType = null;
    org.eclipse.jdt.core.dom.Assignment.Operator javaOperator = node.getOperator();
    if (javaOperator == org.eclipse.jdt.core.dom.Assignment.Operator.ASSIGN) {
        tokenType = TokenType.EQ;
    }
    if (javaOperator == org.eclipse.jdt.core.dom.Assignment.Operator.PLUS_ASSIGN) {
        tokenType = TokenType.PLUS_EQ;
    }
    if (javaOperator == org.eclipse.jdt.core.dom.Assignment.Operator.MINUS_ASSIGN) {
        tokenType = TokenType.MINUS_EQ;
    }
    if (javaOperator == org.eclipse.jdt.core.dom.Assignment.Operator.TIMES_ASSIGN) {
        tokenType = TokenType.STAR_EQ;
    }
    if (javaOperator == org.eclipse.jdt.core.dom.Assignment.Operator.DIVIDE_ASSIGN) {
        tokenType = TokenType.SLASH_EQ;
    }
    if (javaOperator == org.eclipse.jdt.core.dom.Assignment.Operator.REMAINDER_ASSIGN) {
        tokenType = TokenType.PERCENT_EQ;
    }
    if (javaOperator == org.eclipse.jdt.core.dom.Assignment.Operator.LEFT_SHIFT_ASSIGN) {
        tokenType = TokenType.LT_LT_EQ;
    }
    if (javaOperator == org.eclipse.jdt.core.dom.Assignment.Operator.RIGHT_SHIFT_SIGNED_ASSIGN
            || javaOperator == org.eclipse.jdt.core.dom.Assignment.Operator.RIGHT_SHIFT_UNSIGNED_ASSIGN) {
        tokenType = TokenType.GT_GT_EQ;
    }
    if (javaOperator == org.eclipse.jdt.core.dom.Assignment.Operator.BIT_XOR_ASSIGN) {
        tokenType = TokenType.CARET_EQ;
    }
    if (javaOperator == org.eclipse.jdt.core.dom.Assignment.Operator.BIT_OR_ASSIGN) {
        tokenType = TokenType.BAR_EQ;
    }
    if (javaOperator == org.eclipse.jdt.core.dom.Assignment.Operator.BIT_AND_ASSIGN) {
        tokenType = TokenType.AMPERSAND_EQ;
    }
    Assert.isNotNull(tokenType, "No token for: " + javaOperator);
    // done
    return done(new AssignmentExpression(left, new Token(tokenType, 0), right));
}

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

License:Open Source License

@Override
public boolean visit(Assignment node) {
    Operator op = node.getOperator();//from  w  w  w. j  a va  2s .co  m
    Expression lhs = node.getLeftHandSide();
    Expression rhs = node.getRightHandSide();
    if (op == Operator.PLUS_ASSIGN && Types.isJavaStringType(lhs.resolveTypeBinding())) {
        boolean needClosingParen = printAssignmentLhs(lhs);
        // Change "str1 += str2" to "str1 = str1 + str2".
        buffer.append(" = ");
        printStringConcatenation(lhs, rhs, Collections.<Expression>emptyList(), needClosingParen);
        if (needClosingParen) {
            buffer.append(")");
        }
    } else if (op == Operator.REMAINDER_ASSIGN && (isFloatingPoint(lhs) || isFloatingPoint(rhs))) {
        lhs.accept(this);
        buffer.append(" = fmod(");
        lhs.accept(this);
        buffer.append(", ");
        rhs.accept(this);
        buffer.append(")");
    } else if (lhs instanceof ArrayAccess) {
        printArrayElementAssignment(lhs, rhs, op);
    } else if (op == Operator.RIGHT_SHIFT_UNSIGNED_ASSIGN) {
        lhs.accept(this);
        buffer.append(" = ");
        printUnsignedRightShift(lhs, rhs);
    } else {
        IVariableBinding var = Types.getVariableBinding(lhs);
        boolean useWriter = false;
        if (var != null && var.getDeclaringClass() != null) {
            // Test with toString, as var may have been have a renamed type.
            String declaringClassName = var.getDeclaringClass().toString();
            String methodsClassName = Types.getTypeBinding(getOwningType(node)).toString();
            useWriter = Types.isStaticVariable(var) && !declaringClassName.equals(methodsClassName);
        }
        if (useWriter) {
            // convert static var assignment to its writer message
            buffer.append('[');
            if (lhs instanceof QualifiedName) {
                QualifiedName qn = (QualifiedName) lhs;
                qn.getQualifier().accept(this);
            } else {
                buffer.append(NameTable.getFullName(var.getDeclaringClass()));
            }
            buffer.append(" set");
            buffer.append(NameTable.capitalize(var.getName()));
            String typeName = NameTable.javaTypeToCpp(var.getType(), false);
            String param = CppSourceFileGenerator.parameterKeyword(typeName, var.getType());
            buffer.append(NameTable.capitalize(param));
            buffer.append(':');
            rhs.accept(this);
            buffer.append(']');
            return false;
        } else {
            boolean needClosingParen = printAssignmentLhs(lhs);
            buffer.append(' ');
            buffer.append(op.toString());
            buffer.append(' ');
            if (Types.isJavaObjectType(Types.getTypeBinding(lhs)) && Types.getTypeBinding(rhs).isInterface()) {
                // The compiler doesn't know that NSObject is the root of all
                // objects used by transpiled code, so add a cast.
                buffer.append("(NSObject *) ");
            }
            if (useReferenceCounting && !isNewAssignment(node) && var != null && Types.isStaticVariable(var)
                    && !var.getType().isPrimitive() && !Types.isWeakReference(var)
                    && rhs.getNodeType() != ASTNode.NULL_LITERAL) {
                buffer.append('[');
                rhs.accept(this);
                buffer.append(" retain]");
            } else {
                boolean needRetainRhs = needClosingParen && !isNewAssignment(node)
                        && !Types.isWeakReference(var);
                if (rhs instanceof NullLiteral) {
                    needRetainRhs = false;
                }
                if (needRetainRhs) {
                    buffer.append("[");
                }
                rhs.accept(this);
                if (needRetainRhs) {
                    buffer.append(" retain]");
                }
                if (needClosingParen) {
                    buffer.append(")");
                }
            }
            return false;
        }
    }
    return false;
}