List of usage examples for org.eclipse.jdt.core.dom AST newArrayType
public ArrayType newArrayType(Type elementType, int dimensions)
From source file:com.google.devtools.j2cpp.translate.DeadCodeEliminator.java
License:Open Source License
/** * Create a new Type for the given type binding. If the binding * represents a parameterized type reference, the returned Type * is a ParameterizedType with the same type parameters. Otherwise * the returned Type is a SimpleType./* w w w . ja v a2 s . c o m*/ */ @SuppressWarnings("unchecked") private Type createType(AST ast, ITypeBinding scope, ITypeBinding type) { Type newType; if (type.isArray()) { newType = ast.newArrayType(createType(ast, scope, type.getElementType()), type.getDimensions()); } else if (type.isPrimitive()) { newType = ast.newPrimitiveType(PrimitiveType.toCode(type.getName())); } else if (type.isWildcardType()) { WildcardType wildType = ast.newWildcardType(); ITypeBinding bound = type.getBound(); if (bound != null) { wildType.setBound(createType(ast, scope, bound), type.isUpperbound()); } newType = wildType; } else if (!type.isParameterizedType()) { String name = inScope(type, scope) ? type.getName() : type.getQualifiedName(); newType = ast.newSimpleType(ast.newName(name)); } else { ITypeBinding erasure = type.getErasure(); String name = inScope(type, scope) ? erasure.getName() : erasure.getQualifiedName(); Type rawType = ast.newSimpleType(ast.newName(name)); ParameterizedType paramType = ast.newParameterizedType(rawType); ITypeBinding[] typeArgs = type.getTypeArguments(); for (ITypeBinding param : typeArgs) { paramType.typeArguments().add(createType(ast, scope, param)); } newType = paramType; } generatedTypes.put(newType, type); return newType; }
From source file:nz.ac.massey.cs.care.refactoring.executers.IntroduceFactoryRefactoring.java
License:Open Source License
/** * @param argType//from w ww. j a va2s.co m * @param extraDims number of extra array dimensions to add to the resulting type * @param ast * @return a Type that describes the given ITypeBinding. If the binding * refers to an object type, use the import rewriter to determine whether * the reference requires a new import, or instead needs to be qualified.<br> * Like ASTNodeFactory.newType(), but for the handling of imports. */ private Type typeNodeForTypeBinding(ITypeBinding argType, int extraDims, AST ast) { if (extraDims > 0) { return ast.newArrayType(typeNodeForTypeBinding(argType, 0, ast), extraDims); } else if (argType.isArray()) { Type elementType = typeNodeForTypeBinding(argType.getElementType(), extraDims, ast); return ast.newArrayType(elementType, argType.getDimensions()); } else { return fImportRewriter.addImport(argType, ast); } }
From source file:org.eclipse.objectteams.otdt.internal.ui.text.correction.QuickFixProcessor.java
License:Open Source License
@SuppressWarnings("unchecked") private ASTRewriteCorrectionProposal getMigratePathSyntaxProposal(ICompilationUnit cu, ASTNode selectedNode) { if (selectedNode instanceof SingleVariableDeclaration) selectedNode = ((SingleVariableDeclaration) selectedNode).getType(); ASTNode oldType = selectedNode; // saved for replacing be rewriter AST ast = oldType.getAST(); // elements for the new type: String prefixPath = null;//from w ww . j a v a2 s .c om SimpleName typeName = null; int dimensions = 0; // strip off dims: if (selectedNode.getNodeType() == ASTNode.ARRAY_TYPE) { ArrayType type = (ArrayType) selectedNode; dimensions = type.getDimensions(); oldType = type.getElementType(); } // strip off simple type possibly wrapping qualified name: if (oldType.getNodeType() == ASTNode.SIMPLE_TYPE) { SimpleType type = (SimpleType) oldType; oldType = type.getName(); } // what remains should be a qualified something: if (oldType.getNodeType() == ASTNode.QUALIFIED_NAME) { QualifiedName name = (QualifiedName) oldType; prefixPath = name.getQualifier().toString(); typeName = name.getName(); } else if (oldType.getNodeType() == ASTNode.QUALIFIED_TYPE) { QualifiedType type = (QualifiedType) oldType; prefixPath = type.getQualifier().toString(); typeName = type.getName(); } if (prefixPath != null) {// assemble: if (prefixPath.equals("base")) //$NON-NLS-1$ prefixPath = baseQualifier(selectedNode, typeName) + prefixPath; // T Type simpleType = ast.newSimpleType((Name) ASTNode.copySubtree(ast, typeName)); // T<> ParameterizedType paramType = ast.newParameterizedType(simpleType); // T<@prefix.path> paramType.typeArguments().add(ast.newTypeAnchor(ast.newName(prefixPath))); // T<@prefix.path>[].. Type newType = (dimensions == 0) ? paramType : ast.newArrayType(paramType, dimensions); ASTRewrite rewrite = ASTRewrite.create(ast); rewrite.replace(selectedNode, newType, null); return new ASTRewriteCorrectionProposal( Messages.format(CorrectionMessages.OTQuickfix_migrateroletypesyntax_description, null), cu, rewrite, 17, // TODO(SH): ;-) JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_CHANGE)); } return null; }
From source file:org.evosuite.testcarver.codegen.CodeGenerator.java
License:Open Source License
private Type createAstArrayType(final String type, final AST ast) { // NOTE: see asm4 guide p. 11 for more insights about internal type representation final int arrayDim = type.lastIndexOf('[') + 1; if (type.contains("[L")) { // --- object array // TODO use regex for extraction String extractedType = type.substring(type.indexOf('L') + 1, type.length() - 1); extractedType = extractedType.replaceFirst("java\\.lang\\.", ""); return ast.newArrayType(this.createAstType(extractedType, ast), arrayDim); } else {//from w w w . ja v a 2 s. c o m // --- primitive type array if (type.contains("[I")) // int[] { return ast.newArrayType(ast.newSimpleType(ast.newSimpleName("int")), arrayDim); } else if (type.contains("[B")) // byte[] { return ast.newArrayType(ast.newSimpleType(ast.newSimpleName("byte")), arrayDim); } else if (type.contains("[C")) // char[] { return ast.newArrayType(ast.newSimpleType(ast.newSimpleName("char")), arrayDim); } else if (type.contains("[D")) // double[] { return ast.newArrayType(ast.newSimpleType(ast.newSimpleName("double")), arrayDim); } else if (type.contains("[Z")) // boolean[] { return ast.newArrayType(ast.newSimpleType(ast.newSimpleName("boolean")), arrayDim); } else if (type.contains("[F")) // float[] { return ast.newArrayType(ast.newSimpleType(ast.newSimpleName("float")), arrayDim); } else if (type.contains("[S")) // short[] { return ast.newArrayType(ast.newSimpleType(ast.newSimpleName("short")), arrayDim); } else if (type.contains("[J")) // long[] { return ast.newArrayType(ast.newSimpleType(ast.newSimpleName("long")), arrayDim); } else { throw new RuntimeException("Can not create array type for " + type); } } }
From source file:org.evosuite.testcarver.codegen.JUnitCodeGenerator.java
License:Open Source License
private Type createAstArrayType(final String type, final AST ast) { // NOTE: see asm4 guide p. 11 for more insights about internal type representation final int arrayDim = type.lastIndexOf('[') + 1; if (type.contains("[L")) { // --- object array // TODO use regex for extraction String extractedType = type.substring(type.indexOf('L') + 1, type.length() - 1); extractedType = extractedType.replaceFirst("java\\.lang\\.", ""); extractedType = extractedType.replace('$', '.'); return ast.newArrayType(this.createAstType(extractedType, ast), arrayDim); } else {// ww w . ja v a 2 s . c om // --- primitive type array if (type.contains("[I")) // int[] { return ast.newArrayType(ast.newPrimitiveType(PrimitiveType.INT), arrayDim); } else if (type.contains("[B")) // byte[] { return ast.newArrayType(ast.newPrimitiveType(PrimitiveType.BYTE), arrayDim); } else if (type.contains("[C")) // char[] { return ast.newArrayType(ast.newPrimitiveType(PrimitiveType.CHAR), arrayDim); } else if (type.contains("[D")) // double[] { return ast.newArrayType(ast.newPrimitiveType(PrimitiveType.DOUBLE), arrayDim); } else if (type.contains("[Z")) // boolean[] { return ast.newArrayType(ast.newPrimitiveType(PrimitiveType.BOOLEAN), arrayDim); } else if (type.contains("[F")) // float[] { return ast.newArrayType(ast.newPrimitiveType(PrimitiveType.FLOAT), arrayDim); } else if (type.contains("[S")) // short[] { return ast.newArrayType(ast.newPrimitiveType(PrimitiveType.SHORT), arrayDim); } else if (type.contains("[J")) // long[] { return ast.newArrayType(ast.newPrimitiveType(PrimitiveType.LONG), arrayDim); } else { throw new RuntimeException("Can not create array type for " + type); } } }
From source file:org.wloka.reflectify.internal.assist.AbstractProposalCreator.java
License:Open Source License
protected Type createType(ITypeBinding typeBind, AST ast) { ITypeBinding realType = typeBind;/*from w ww .j av a2 s. c om*/ Type result = null; if (typeBind.isArray()) { realType = typeBind.getElementType(); } if (realType.isPrimitive()) { result = ast.newPrimitiveType(PrimitiveType.toCode(realType.getName())); } else if (realType.isParameterizedType()) { String typeName = realType.getName(); result = ast.newSimpleType(ast.newSimpleName(typeName.substring(0, typeName.indexOf('<')))); } else { result = ast.newSimpleType(ast.newSimpleName(realType.getName())); } if (typeBind.isArray()) { return ast.newArrayType(result, typeBind.getDimensions()); } return result; }