List of usage examples for org.eclipse.jdt.core.dom AST newNumberLiteral
public NumberLiteral newNumberLiteral(String literal)
From source file:ch.acanda.eclipse.pmd.java.resolution.optimization.SimplifyStartsWithQuickFix.java
License:Open Source License
/** * Rewrites <code>s.startsWith("a")</code> as <code>s.charAt(0) == 'a'</code>. *///from w ww . j a v a 2 s .c o m @Override @SuppressWarnings("unchecked") protected boolean apply(final MethodInvocation node) { final AST ast = node.getAST(); final MethodInvocation charAt = ast.newMethodInvocation(); charAt.setExpression(copy(node.getExpression())); charAt.setName(ast.newSimpleName("charAt")); charAt.arguments().add(ast.newNumberLiteral("0")); final CharacterLiteral character = ast.newCharacterLiteral(); final StringLiteral s = (StringLiteral) node.arguments().get(0); character.setEscapedValue(s.getEscapedValue().replace('"', '\'')); final InfixExpression eq = ast.newInfixExpression(); eq.setOperator(Operator.EQUALS); eq.setLeftOperand(charAt); eq.setRightOperand(character); replace(node, eq); return true; }
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(); 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);//from w w w . ja v a 2 s.co m 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:com.android.ide.eclipse.adt.internal.lint.AddSuppressAnnotation.java
License:Open Source License
private Expression createLiteral(AST ast) { Expression value;//from w w w . j ava 2 s. co m if (!isCodeName()) { value = ast.newQualifiedName(ast.newQualifiedName(ast.newSimpleName("Build"), //$NON-NLS-1$ ast.newSimpleName("VERSION_CODES")), //$NON-NLS-1$ ast.newSimpleName(mTargetApi)); } else { value = ast.newNumberLiteral(mTargetApi); } return value; }
From source file:com.android.ide.eclipse.auidt.internal.lint.AddSuppressAnnotation.java
License:Open Source License
@SuppressWarnings({ "rawtypes" }) // Java AST API has raw types private MultiTextEdit addTargetApiAnnotation(IDocument document, ICompilationUnit compilationUnit, BodyDeclaration declaration) throws CoreException { List modifiers = declaration.modifiers(); SingleMemberAnnotation existing = null; for (Object o : modifiers) { if (o instanceof SingleMemberAnnotation) { SingleMemberAnnotation annotation = (SingleMemberAnnotation) o; String type = annotation.getTypeName().getFullyQualifiedName(); if (type.equals(FQCN_TARGET_API) || type.endsWith(TARGET_API)) { existing = annotation;/*from w w w.jav a 2 s.c o m*/ break; } } } ImportRewrite importRewrite = ImportRewrite.create(compilationUnit, true); String local = importRewrite.addImport(FQCN_TARGET_API); AST ast = declaration.getAST(); ASTRewrite rewriter = ASTRewrite.create(ast); if (existing == null) { SingleMemberAnnotation newAnnotation = ast.newSingleMemberAnnotation(); newAnnotation.setTypeName(ast.newSimpleName(local)); NumberLiteral value = ast.newNumberLiteral(Integer.toString(mTargetApi)); //value.setLiteralValue(mId); newAnnotation.setValue(value); ListRewrite listRewrite = rewriter.getListRewrite(declaration, declaration.getModifiersProperty()); listRewrite.insertFirst(newAnnotation, null); } else { Expression existingValue = existing.getValue(); if (existingValue instanceof NumberLiteral) { // Change the value to the new value NumberLiteral value = ast.newNumberLiteral(Integer.toString(mTargetApi)); rewriter.set(existing, VALUE_PROPERTY, value, null); } else { assert false : existingValue; return null; } } TextEdit importEdits = importRewrite.rewriteImports(new NullProgressMonitor()); TextEdit annotationEdits = rewriter.rewriteAST(document, null); MultiTextEdit edit = new MultiTextEdit(); if (importEdits.hasChildren()) { edit.addChild(importEdits); } edit.addChild(annotationEdits); return edit; }
From source file:com.google.devtools.j2cpp.translate.AnonymousClassConverter.java
License:Open Source License
/** * Returns a literal node for a specified constant value. *//*ww w.ja v a 2 s.c o m*/ private Expression makeLiteral(Object value, String typeName, AST ast) { Expression literal; if (value instanceof Boolean) { literal = ast.newBooleanLiteral((Boolean) value); } else if (value instanceof Character) { CharacterLiteral c = ast.newCharacterLiteral(); c.setCharValue((Character) value); literal = c; } else if (value instanceof Number) { literal = ast.newNumberLiteral(value.toString()); } else if (value instanceof String) { StringLiteral s = ast.newStringLiteral(); s.setLiteralValue((String) value); literal = s; } else { throw new AssertionError("unknown constant type"); } ITypeBinding type = ast.resolveWellKnownType(typeName); assert type != null : "unknown constant type"; Types.addBinding(literal, type); return literal; }
From source file:com.google.devtools.j2cpp.translate.DeadCodeEliminator.java
License:Open Source License
/** * Creates an Expression with a suitable zero-value for the specified type. * TODO(user): this doesn't take into account @NonNull annotations. *///from w ww . ja v a2 s .c o m private Expression getDefaultValue(AST ast, ITypeBinding type) { if (type.isPrimitive()) { if (type.getName().equals("boolean")) { return ast.newBooleanLiteral(false); } // All primitives types except boolean can be initialized as "0". return ast.newNumberLiteral("0"); } else { return ast.newNullLiteral(); } }
From source file:com.google.devtools.j2cpp.translate.Rewriter.java
License:Open Source License
/** * Convert an array initializer into a init method on the equivalent * IOSArray. This init method takes a C array and count, like * NSArray.arrayWithObjects:count:. For example, "int[] a = { 1, 2, 3 };" * translates to "[IOSIntArray initWithInts:(int[]){ 1, 2, 3 } count:3];". *//*from ww w . j a va 2s. c o m*/ private MethodInvocation createIOSArrayInitializer(ITypeBinding arrayType, ArrayInitializer arrayInit) { AST ast = arrayInit.getAST(); int dimensions = arrayType.getDimensions(); ITypeBinding componentType; IOSArrayTypeBinding iosArrayBinding; if (dimensions > 2) { // This gets resolved into IOSObjectArray, for an array of arrays. componentType = iosArrayBinding = Types.resolveArrayType(arrayType); } else if (dimensions == 2) { // Creates a single-dimension array type. componentType = Types.resolveArrayType(arrayType.getElementType()); iosArrayBinding = Types.resolveArrayType(componentType); } else { componentType = Types.getTypeBinding(arrayInit).getComponentType(); iosArrayBinding = Types.resolveArrayType(componentType); } // Create IOS message. MethodInvocation message = ast.newMethodInvocation(); SimpleName receiver = ast.newSimpleName(iosArrayBinding.getName()); Types.addBinding(receiver, iosArrayBinding); message.setExpression(receiver); String methodName = iosArrayBinding.getInitMethod(); SimpleName messageName = ast.newSimpleName(methodName); GeneratedMethodBinding methodBinding = new GeneratedMethodBinding(methodName, Modifier.PUBLIC | Modifier.STATIC, iosArrayBinding, iosArrayBinding, false, false, true); Types.addBinding(messageName, methodBinding); message.setName(messageName); Types.addBinding(message, methodBinding); // Pass array initializer as C-style array to message. @SuppressWarnings("unchecked") List<Expression> args = message.arguments(); // safe by definition ArrayInitializer newArrayInit = NodeCopier.copySubtree(ast, arrayInit); @SuppressWarnings("unchecked") List<Expression> exprs = newArrayInit.expressions(); for (int i = 0; i < exprs.size(); i++) { // Convert any elements that are also array initializers. Expression expr = exprs.get(i); if (expr instanceof ArrayInitializer) { exprs.set(i, createIOSArrayInitializer(componentType, (ArrayInitializer) expr)); } } args.add(newArrayInit); GeneratedVariableBinding argBinding = new GeneratedVariableBinding(arrayType, false, true, null, methodBinding); methodBinding.addParameter(argBinding); NumberLiteral arraySize = ast.newNumberLiteral(Integer.toString(arrayInit.expressions().size())); Types.addBinding(arraySize, ast.resolveWellKnownType("int")); args.add(arraySize); argBinding = new GeneratedVariableBinding(ast.resolveWellKnownType("int"), false, true, null, methodBinding); methodBinding.addParameter(argBinding); // Specify type for object arrays. if (iosArrayBinding.getName().equals("IOSObjectArray")) { TypeLiteral typeLiteral = ast.newTypeLiteral(); typeLiteral.setType(Types.makeType(componentType)); Types.addBinding(typeLiteral, Types.getIOSClass()); args.add(typeLiteral); argBinding = new GeneratedVariableBinding("type", 0, Types.getIOSClass(), false, true, null, methodBinding); methodBinding.addParameter(argBinding); } return message; }
From source file:com.google.devtools.j2objc.translate.ASTFactory.java
License:Apache License
public static NumberLiteral newNumberLiteral(AST ast, String token, String type) { NumberLiteral literal = ast.newNumberLiteral(token); Types.addBinding(literal, ast.resolveWellKnownType(type)); return literal; }
From source file:com.google.devtools.j2objc.translate.ASTFactory.java
License:Apache License
private static Expression makeLiteralInternal(AST ast, Object value) { if (value instanceof Boolean) { return ast.newBooleanLiteral((Boolean) value); } else if (value instanceof Character) { CharacterLiteral c = ast.newCharacterLiteral(); c.setCharValue((Character) value); return c; } else if (value instanceof Number) { return ast.newNumberLiteral(value.toString()); } else if (value instanceof String) { StringLiteral s = ast.newStringLiteral(); s.setLiteralValue((String) value); return s; }// ww w. ja v a 2 s. c om throw new AssertionError("unknown constant type"); }
From source file:com.halware.nakedide.eclipse.ext.annot.utils.AstUtils.java
License:Open Source License
/** * Creates an (AST) {@link Literal} expression. * //www . j ava 2 s.c om * @param ast * @param value * @return */ public static Expression createExpression(AST ast, Object value) { if (value instanceof String) { String stringValue = (String) value; StringLiteral newStringLiteral = ast.newStringLiteral(); newStringLiteral.setLiteralValue(stringValue); return newStringLiteral; } if (value instanceof Boolean) { Boolean booleanValue = (Boolean) value; return ast.newBooleanLiteral(booleanValue); } if (value instanceof Number) { Number numberValue = (Number) value; return ast.newNumberLiteral(numberValue.toString()); } if (value instanceof AstUtils.TypeLiteralValue) { AstUtils.TypeLiteralValue classHandle = (AstUtils.TypeLiteralValue) value; TypeLiteral newTypeLiteral = ast.newTypeLiteral(); Name typeName = ast.newName(classHandle.getClassName()); Type type = ast.newSimpleType(typeName); newTypeLiteral.setType(type); return newTypeLiteral; } if (value instanceof AstUtils.QualifiedNameValue) { AstUtils.QualifiedNameValue enumMember = (AstUtils.QualifiedNameValue) value; Name enumTypeName = ast.newName(enumMember.getName()); SimpleName enumMemberName = ast.newSimpleName(enumMember.getIdentifier()); return ast.newQualifiedName(enumTypeName, enumMemberName); } return ast.newNullLiteral(); }