Example usage for org.eclipse.jdt.core.dom AST newArrayType

List of usage examples for org.eclipse.jdt.core.dom AST newArrayType

Introduction

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

Prototype

public ArrayType newArrayType(Type elementType, int dimensions) 

Source Link

Document

Creates and returns a new unparented array type node with the given element type and number of dimensions.

Usage

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;
}