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

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

Introduction

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

Prototype

public void setRightHandSide(Expression expression) 

Source Link

Document

Sets the right hand side of this assignment expression.

Usage

From source file:cn.ieclipse.adt.ext.jdt.SourceGenerator.java

License:Apache License

private static void rewriteOnCreate(CompilationUnit unit, String dbName, List<String> tableCreators) {
    AST ast = unit.getAST();//  w  w  w.ja  v a  2 s. c o m
    TypeDeclaration type = (TypeDeclaration) unit.types().get(0);
    MethodDeclaration onCreate = getMethod(type, ("onCreate"), null);
    if (onCreate != null) {
        Block methodBlock = ast.newBlock();

        // mOpenHelper = new
        // InlineOpenHelper(this.getContext(),"person.db",null,1);
        Assignment a = ast.newAssignment();
        a.setOperator(Assignment.Operator.ASSIGN);

        a.setLeftHandSide(ast.newSimpleName("mOpenHelper"));

        ClassInstanceCreation cc = ast.newClassInstanceCreation();
        cc.setType(ast.newSimpleType(ast.newSimpleName("SQLiteOpenHelper")));
        ThisExpression thisExp = ast.newThisExpression();
        MethodInvocation mi = ast.newMethodInvocation();
        mi.setName(ast.newSimpleName("getContext"));
        mi.setExpression(thisExp);
        cc.arguments().add(mi);
        StringLiteral sl = ast.newStringLiteral();
        sl.setLiteralValue(dbName);

        cc.arguments().add(sl);
        cc.arguments().add(ast.newNullLiteral());
        cc.arguments().add(ast.newNumberLiteral("1"));
        a.setRightHandSide(cc);
        methodBlock.statements().add(ast.newExpressionStatement(a));

        AnonymousClassDeclaration acd = ast.newAnonymousClassDeclaration();
        cc.setAnonymousClassDeclaration(acd);
        genInnerSQLiteOpenHelper(acd, ast, tableCreators);

        a = ast.newAssignment();
        a.setOperator(Assignment.Operator.ASSIGN);

        a.setLeftHandSide(ast.newSimpleName("session"));

        ClassInstanceCreation cic = ast.newClassInstanceCreation();
        cic.setType(ast.newSimpleType(ast.newSimpleName("Session")));

        // SingleVariableDeclaration svd =
        // ast.newSingleVariableDeclaration();
        // svd.setName(ast.newSimpleName("mOpenHelper"));
        cic.arguments().add(ast.newSimpleName("mOpenHelper"));
        // vdf.setInitializer(cic);
        a.setRightHandSide(cic);
        // methodBlock.statements().add(vde);
        methodBlock.statements().add(ast.newExpressionStatement(a));

        ReturnStatement returnStmt = ast.newReturnStatement();
        returnStmt.setExpression(ast.newBooleanLiteral(true));
        methodBlock.statements().add(returnStmt);

        onCreate.setBody(methodBlock);
    }
}

From source file:cn.ieclipse.adt.ext.jdt.SourceGenerator.java

License:Apache License

private static void genInnerSQLiteOpenHelper(AnonymousClassDeclaration acd, AST ast,
        List<String> tableCreators) {
    MethodDeclaration md = ast.newMethodDeclaration();
    md.modifiers().addAll(ast.newModifiers((Modifier.PUBLIC)));
    md.setReturnType2(ast.newPrimitiveType(PrimitiveType.VOID));
    md.setName(ast.newSimpleName("onCreate"));
    SingleVariableDeclaration svd = ast.newSingleVariableDeclaration();
    svd.setName(ast.newSimpleName("db"));
    svd.setType(ast.newSimpleType(ast.newSimpleName("SQLiteDatabase")));
    md.parameters().add(svd);//from w w w  .j  a v a2s  .c  o  m
    Block innerBlock = ast.newBlock();
    md.setBody(innerBlock);
    VariableDeclarationFragment vdf = ast.newVariableDeclarationFragment();
    vdf.setName(ast.newSimpleName("sql"));
    StringLiteral sl = ast.newStringLiteral();
    sl.setLiteralValue("");
    vdf.setInitializer(sl);
    VariableDeclarationStatement vds = ast.newVariableDeclarationStatement(vdf);
    vds.setType(ast.newSimpleType(ast.newSimpleName("String")));
    innerBlock.statements().add(vds);
    for (String creator : tableCreators) {
        String[] lines = creator.split(SourceAnalysis.LF);
        for (String line : lines) {
            Assignment a = ast.newAssignment();
            a.setOperator(Assignment.Operator.PLUS_ASSIGN);
            a.setLeftHandSide(ast.newSimpleName("sql"));
            StringLiteral temp = ast.newStringLiteral();
            temp.setLiteralValue(line);
            a.setRightHandSide(temp);
            innerBlock.statements().add(ast.newExpressionStatement(a));
        }

        MethodInvocation mi = ast.newMethodInvocation();
        mi.setName(ast.newSimpleName("execSQL"));
        mi.setExpression(ast.newSimpleName("db"));
        mi.arguments().add(ast.newSimpleName("sql"));
        innerBlock.statements().add(ast.newExpressionStatement(mi));
    }

    acd.bodyDeclarations().add(md);
    // onUpgrade
    md = ast.newMethodDeclaration();
    md.modifiers().addAll(ast.newModifiers((Modifier.PUBLIC)));
    md.setReturnType2(ast.newPrimitiveType(PrimitiveType.VOID));
    md.setName(ast.newSimpleName("onUpgrade"));
    svd = ast.newSingleVariableDeclaration();
    svd.setName(ast.newSimpleName("db"));
    svd.setType(ast.newSimpleType(ast.newSimpleName("SQLiteDatabase")));
    md.parameters().add(svd);

    svd = ast.newSingleVariableDeclaration();
    svd.setName(ast.newSimpleName("oldVersion"));
    svd.setType(ast.newPrimitiveType(PrimitiveType.INT));
    md.parameters().add(svd);

    svd = ast.newSingleVariableDeclaration();
    svd.setName(ast.newSimpleName("newVersion"));
    svd.setType(ast.newPrimitiveType(PrimitiveType.INT));
    md.parameters().add(svd);

    innerBlock = ast.newBlock();
    md.setBody(innerBlock);
    acd.bodyDeclarations().add(md);
}

From source file:com.google.devtools.j2cpp.translate.Autoboxer.java

License:Open Source License

@Override
public void endVisit(Assignment node) {
    Expression lhs = node.getLeftHandSide();
    ITypeBinding lhType = getBoxType(lhs);
    Expression rhs = node.getRightHandSide();
    ITypeBinding rhType = getBoxType(rhs);
    Assignment.Operator op = node.getOperator();
    if (op != Assignment.Operator.ASSIGN && !lhType.isPrimitive()
            && !lhType.equals(node.getAST().resolveWellKnownType("java.lang.String"))) {
        // Not a simple assignment; need to break the <operation>-WITH_ASSIGN
        // assignment apart.
        node.setOperator(Assignment.Operator.ASSIGN);
        node.setRightHandSide(box(newInfixExpression(lhs, rhs, op, lhType)));
    } else {//from   www  .j  a  v  a  2 s .co  m
        if (lhType.isPrimitive() && !rhType.isPrimitive()) {
            node.setRightHandSide(unbox(rhs));
        } else if (!lhType.isPrimitive() && rhType.isPrimitive()) {
            node.setRightHandSide(box(rhs));
        }
    }
}

From source file:com.google.devtools.j2cpp.translate.ClassConverter.java

License:Open Source License

protected Statement createAssignment(IVariableBinding field, IVariableBinding param, AST ast) {
    SimpleName fieldName = ast.newSimpleName(field.getName());
    Types.addBinding(fieldName, field);
    SimpleName paramName = ast.newSimpleName(param.getName());
    Types.addBinding(paramName, param);
    Assignment assign = ast.newAssignment();
    assign.setLeftHandSide(fieldName);/*from  ww w  .j  ava  2 s  .co m*/
    assign.setRightHandSide(paramName);
    Types.addBinding(assign, field.getType());
    return ast.newExpressionStatement(assign);
}

From source file:com.google.devtools.j2cpp.translate.DestructorGenerator.java

License:Open Source License

@SuppressWarnings("unchecked")
private void addReleaseStatements(MethodDeclaration method, List<IVariableBinding> fields) {
    // Find existing super.finalize(), if any.
    final boolean[] hasSuperFinalize = new boolean[1];
    method.accept(new ASTVisitor() {
        @Override//from  w  w w . ja va 2 s .  c o m
        public void endVisit(SuperMethodInvocation node) {
            if (FINALIZE_METHOD.equals(node.getName().getIdentifier())) {
                hasSuperFinalize[0] = true;
            }
        }
    });

    List<Statement> statements = method.getBody().statements(); // safe by definition
    if (!statements.isEmpty() && statements.get(0) instanceof TryStatement) {
        TryStatement tryStatement = ((TryStatement) statements.get(0));
        if (tryStatement.getBody() != null) {
            statements = tryStatement.getBody().statements(); // safe by definition
        }
    }
    AST ast = method.getAST();
    int index = statements.size();
    for (IVariableBinding field : fields) {
        if (!field.getType().isPrimitive() && !Types.isWeakReference(field)) {
            Assignment assign = ast.newAssignment();
            SimpleName receiver = ast.newSimpleName(field.getName());
            Types.addBinding(receiver, field);
            assign.setLeftHandSide(receiver);
            assign.setRightHandSide(Types.newNullLiteral());
            Types.addBinding(assign, field.getDeclaringClass());
            ExpressionStatement stmt = ast.newExpressionStatement(assign);
            statements.add(index, stmt);
        }
    }
    if (Options.useReferenceCounting() && !hasSuperFinalize[0]) {
        SuperMethodInvocation call = ast.newSuperMethodInvocation();
        IMethodBinding methodBinding = Types.getMethodBinding(method);
        GeneratedMethodBinding binding = new GeneratedMethodBinding(destructorName, Modifier.PUBLIC,
                Types.mapTypeName("void"), methodBinding.getDeclaringClass(), false, false, true);
        Types.addBinding(call, binding);
        call.setName(ast.newSimpleName(destructorName));
        Types.addBinding(call.getName(), binding);
        ExpressionStatement stmt = ast.newExpressionStatement(call);
        statements.add(stmt);
    }
}

From source file:com.google.devtools.j2cpp.translate.InitializationNormalizer.java

License:Open Source License

private ExpressionStatement makeAssignmentStatement(VariableDeclarationFragment fragment) {
    AST ast = fragment.getAST();//from   w w w  . j a  v  a  2  s .co  m
    IVariableBinding varBinding = Types.getVariableBinding(fragment);
    Assignment assignment = ast.newAssignment();
    Types.addBinding(assignment, varBinding.getType());
    Expression lhs = ast.newSimpleName(fragment.getName().getIdentifier());
    Types.addBinding(lhs, varBinding);
    assignment.setLeftHandSide(lhs);

    Expression initializer = fragment.getInitializer();
    if (initializer instanceof ArrayInitializer) {
        // An array initializer cannot be directly assigned, since by itself
        // it's just shorthand for an array creation node.  This therefore
        // builds an array creation node with the existing initializer.
        ArrayCreation arrayCreation = ast.newArrayCreation();
        ITypeBinding arrayType = varBinding.getType();
        Types.addBinding(arrayCreation, arrayType);
        Type newType = Types.makeIOSType(arrayType);
        assert newType != null;
        ArrayType newArrayType = ast.newArrayType(newType);
        Types.addBinding(newArrayType, arrayType);
        arrayCreation.setType(newArrayType);
        arrayCreation.setInitializer((ArrayInitializer) NodeCopier.copySubtree(ast, initializer));
        assignment.setRightHandSide(arrayCreation);
    } else {
        assignment.setRightHandSide(NodeCopier.copySubtree(ast, initializer));
    }
    return ast.newExpressionStatement(assignment);
}

From source file:com.google.devtools.j2cpp.translate.Rewriter.java

License:Open Source License

@Override
public boolean visit(FieldDeclaration node) {
    int mods = node.getModifiers();
    if (Modifier.isStatic(mods)) {
        ASTNode parent = node.getParent();
        @SuppressWarnings("unchecked")
        List<BodyDeclaration> classMembers = parent instanceof AbstractTypeDeclaration
                ? ((AbstractTypeDeclaration) parent).bodyDeclarations()
                : ((AnonymousClassDeclaration) parent).bodyDeclarations(); // safe by specification
        int indexOfNewMember = classMembers.indexOf(node) + 1;

        @SuppressWarnings("unchecked")
        List<VariableDeclarationFragment> fragments = node.fragments(); // safe by specification
        for (VariableDeclarationFragment var : fragments) {
            IVariableBinding binding = Types.getVariableBinding(var);
            if (Types.isPrimitiveConstant(binding) && Modifier.isPrivate(binding.getModifiers())) {
                // Don't define accessors for private constants, since they can be
                // directly referenced.
                continue;
            }//from ww w . j  av  a2 s  . co  m

            // rename varName to varName_, per Obj-C style guide
            SimpleName oldName = var.getName();
            ITypeBinding type = ((AbstractTypeDeclaration) node.getParent()).resolveBinding();
            String varName = NameTable.getStaticVarQualifiedName(type, oldName.getIdentifier());
            NameTable.rename(binding, varName);
            ITypeBinding typeBinding = binding.getType();
            var.setExtraDimensions(0); // if array, type was corrected above

            // add accessor(s)
            if (needsReader(var, classMembers)) {
                classMembers.add(indexOfNewMember++, makeStaticReader(var, mods));
            }
            if (!Modifier.isFinal(node.getModifiers()) && needsWriter(var, classMembers)) {
                classMembers.add(indexOfNewMember++,
                        makeStaticWriter(var, oldName.getIdentifier(), node.getType(), mods));
            }

            // move non-constant initialization to init block
            Expression initializer = var.getInitializer();
            if (initializer != null && initializer.resolveConstantExpressionValue() == null) {
                var.setInitializer(null);

                AST ast = var.getAST();
                SimpleName newName = ast.newSimpleName(varName);
                Types.addBinding(newName, binding);
                Assignment assign = ast.newAssignment();
                assign.setLeftHandSide(newName);
                Expression newInit = NodeCopier.copySubtree(ast, initializer);
                assign.setRightHandSide(newInit);
                Types.addBinding(assign, typeBinding);

                Block initBlock = ast.newBlock();
                @SuppressWarnings("unchecked")
                List<Statement> stmts = initBlock.statements(); // safe by definition
                stmts.add(ast.newExpressionStatement(assign));
                Initializer staticInitializer = ast.newInitializer();
                staticInitializer.setBody(initBlock);
                @SuppressWarnings("unchecked")
                List<IExtendedModifier> initMods = staticInitializer.modifiers(); // safe by definition
                initMods.add(ast.newModifier(ModifierKeyword.STATIC_KEYWORD));
                classMembers.add(indexOfNewMember++, staticInitializer);
            }
        }
    }
    return true;
}

From source file:com.google.devtools.j2cpp.translate.Rewriter.java

License:Open Source License

@Override
public boolean visit(Block node) {
    // split array declarations so that initializers are in separate statements.
    @SuppressWarnings("unchecked")
    List<Statement> stmts = node.statements(); // safe by definition
    int n = stmts.size();
    for (int i = 0; i < n; i++) {
        Statement s = stmts.get(i);
        if (s instanceof VariableDeclarationStatement) {
            VariableDeclarationStatement var = (VariableDeclarationStatement) s;
            Map<VariableDeclarationFragment, Expression> initializers = Maps.newLinkedHashMap();
            @SuppressWarnings("unchecked")
            List<VariableDeclarationFragment> fragments = var.fragments();
            for (VariableDeclarationFragment fragment : fragments) {
                ITypeBinding varType = Types.getTypeBinding(fragment);
                if (varType.isArray()) {
                    fragment.setExtraDimensions(0);
                    Expression initializer = fragment.getInitializer();
                    if (initializer != null) {
                        initializers.put(fragment, initializer);
                        if (initializer instanceof ArrayCreation) {
                            ArrayCreation creator = (ArrayCreation) initializer;
                            if (creator.getInitializer() != null) {
                                // replace this redundant array creation node with its
                                // rewritten initializer
                                initializer = creator.getInitializer();
                            } else {
                                continue;
                            }/*from  w w  w  .j av  a2s  . c  o  m*/
                        }
                        if (initializer instanceof ArrayInitializer) {
                            fragment.setInitializer(createIOSArrayInitializer(Types.getTypeBinding(fragment),
                                    (ArrayInitializer) initializer));
                        }
                    }
                }
            }
        } else if (s instanceof ExpressionStatement
                && ((ExpressionStatement) s).getExpression() instanceof Assignment) {
            Assignment assign = (Assignment) ((ExpressionStatement) s).getExpression();
            ITypeBinding assignType = Types.getTypeBinding(assign);
            if (assign.getRightHandSide() instanceof ArrayInitializer) {
                ArrayInitializer arrayInit = (ArrayInitializer) assign.getRightHandSide();
                assert assignType.isArray() : "array initializer assigned to non-array";
                assign.setRightHandSide(createIOSArrayInitializer(assignType, arrayInit));
            } else if (assign.getRightHandSide() instanceof ArrayCreation) {
                ArrayCreation arrayCreate = (ArrayCreation) assign.getRightHandSide();
                ArrayInitializer arrayInit = arrayCreate.getInitializer();
                if (arrayInit != null) {
                    // Replace ArrayCreation node with its initializer.
                    AST ast = node.getAST();
                    Assignment newAssign = ast.newAssignment();
                    Types.addBinding(newAssign, assignType);
                    newAssign.setLeftHandSide(NodeCopier.copySubtree(ast, assign.getLeftHandSide()));
                    newAssign.setRightHandSide(createIOSArrayInitializer(assignType, arrayInit));
                    ((ExpressionStatement) s).setExpression(newAssign);
                }
            }
        }
    }
    return true;
}

From source file:com.google.devtools.j2cpp.translate.Rewriter.java

License:Open Source License

/**
 * Add a static write accessor method for a specified variable.
 *///w w w . j  a  va 2 s.co m
private MethodDeclaration makeStaticWriter(VariableDeclarationFragment var, String paramName, Type type,
        int modifiers) {
    AST ast = var.getAST();
    String varName = var.getName().getIdentifier();
    IVariableBinding varBinding = Types.getVariableBinding(var);

    Type returnType = ast.newPrimitiveType(PrimitiveType.VOID);
    Types.addBinding(returnType, ast.resolveWellKnownType("void"));
    String methodName = "set" + NameTable.capitalize(varName);
    MethodDeclaration accessor = createBlankAccessor(var, methodName, modifiers, returnType);
    GeneratedMethodBinding binding = new GeneratedMethodBinding(accessor, varBinding.getDeclaringClass(),
            false);
    Types.addBinding(accessor, binding);
    Types.addBinding(accessor.getName(), binding);

    SingleVariableDeclaration param = ast.newSingleVariableDeclaration();
    param.setName(ast.newSimpleName(paramName));
    Type paramType = NodeCopier.copySubtree(ast, type);
    param.setType(paramType);
    Types.addBinding(paramType, type.resolveBinding());
    @SuppressWarnings("unchecked")
    List<SingleVariableDeclaration> parameters = accessor.parameters(); // safe by definition
    GeneratedVariableBinding paramBinding = new GeneratedVariableBinding(paramName, 0, type.resolveBinding(),
            false, true, varBinding.getDeclaringClass(), binding);
    Types.addBinding(param, paramBinding);
    Types.addBinding(param.getName(), paramBinding);
    parameters.add(param);
    binding.addParameter(paramBinding);

    Assignment assign = ast.newAssignment();
    SimpleName sn = ast.newSimpleName(NameTable.getName(varBinding));
    assign.setLeftHandSide(sn);
    Types.addBinding(sn, varBinding);
    assign.setRightHandSide(NodeCopier.copySubtree(ast, param.getName()));
    Types.addBinding(assign, varBinding.getType());
    ExpressionStatement assignStmt = ast.newExpressionStatement(assign);

    @SuppressWarnings("unchecked")
    List<Statement> stmts = accessor.getBody().statements(); // safe by definition
    stmts.add(assignStmt);
    Symbols.scanAST(accessor);
    return accessor;
}

From source file:com.google.devtools.j2objc.translate.ASTFactory.java

License:Apache License

public static Assignment newAssignment(AST ast, Expression lhs, Expression rhs) {
    Assignment assignment = ast.newAssignment();
    assignment.setOperator(Assignment.Operator.ASSIGN);
    assignment.setLeftHandSide(lhs);//from w  w w  .  j a  va  2s . c  om
    assignment.setRightHandSide(rhs);
    Types.addBinding(assignment, Types.getTypeBinding(lhs));
    return assignment;
}