// Função auxiliar para copiar o tipo da variável // considerando que um tipo nao pode pertencer a outra AST private Type getType(ITypeBinding typeBinding, AST newAST) { if (typeBinding.isPrimitive()) { return newAST.newPrimitiveType(PrimitiveType.toCode(typeBinding.getName())); } else if (typeBinding.isArray()) { return newAST.newArrayType( this.getType(typeBinding.getElementType(), newAST), typeBinding.getDimensions()); } else if (typeBinding.isParameterizedType()) { ParameterizedType pt = newAST.newParameterizedType(this.getType(typeBinding.getTypeDeclaration(), newAST)); for (ITypeBinding itb : typeBinding.getTypeArguments()) { pt.typeArguments().add(this.getType(itb, newAST)); } return pt; } else if (typeBinding.isWildcardType()) { WildcardType wt = newAST.newWildcardType(); wt.setBound( typeBinding.getBound() == null ? null : this.getType(typeBinding.getBound(), newAST), typeBinding.isUpperbound()); return wt; } else { try { return newAST.newSimpleType(newAST.newName(typeBinding.getQualifiedName())); } catch (Exception e) { return newAST.newSimpleType(newAST.newName(typeBinding.getName())); } } }
@Override public boolean visit(VariableDeclarationStatement node) { Type typ = node.getType(); if (typ.isSimpleType()) { SimpleType simple = (SimpleType) typ; String typName = simple.getName().getFullyQualifiedName(); List<VariableDeclarationFragment> vars = node.fragments(); for (VariableDeclarationFragment var : vars) { map.put(var.getName().getIdentifier(), typName); } } if (typ.isQualifiedType()) { QualifiedType qual = (QualifiedType) typ; String typName = qual.getName().getFullyQualifiedName(); List<VariableDeclarationFragment> vars = node.fragments(); for (VariableDeclarationFragment var : vars) { map.put(var.getName().getIdentifier(), typName); } } if (typ.isPrimitiveType()) { PrimitiveType prim = (PrimitiveType) typ; String typName = prim.getPrimitiveTypeCode().toString(); List<VariableDeclarationFragment> vars = node.fragments(); for (VariableDeclarationFragment var : vars) { map.put(var.getName().getIdentifier(), typName); } } if (typ.isParameterizedType()) { ParameterizedType prim = (ParameterizedType) typ; String typName = prim.getType().toString(); List<VariableDeclarationFragment> vars = node.fragments(); for (VariableDeclarationFragment var : vars) { map.put(var.getName().getIdentifier(), typName); } } if (typ.isArrayType()) { ArrayType prim = (ArrayType) typ; String typName = "Array"; List<VariableDeclarationFragment> vars = node.fragments(); for (VariableDeclarationFragment var : vars) { map.put(var.getName().getIdentifier(), typName); } } return true; }
private static IMember getMember(IStructuredSelection selection) throws JavaModelException { if (selection.size() != 1) return null; Object element = selection.getFirstElement(); if (!(element instanceof IMember)) return null; if (element instanceof IMethod) { IMethod method = (IMethod) element; String returnType = method.getReturnType(); if (PrimitiveType.toCode(Signature.toString(returnType)) != null) return null; return method; } else if (element instanceof IField && !JdtFlags.isEnum((IMember) element)) { return (IField) element; } return null; }
/** * Create an AST type node with a type string (possibly partitioned with "." and "[]"). * * @param ast The {@link org.eclipse.jdt.core.dom.AST} object. * @param type The type. * @return The AST type node. */ public static org.eclipse.jdt.core.dom.Type createType(AST ast, String type) { String elementName = Type.getElementType(type); org.eclipse.jdt.core.dom.Type elementType; if (Type.isPrimitive(elementName)) { elementType = ast.newPrimitiveType(PrimitiveType.toCode(elementName)); } else { Name element = createName(ast, elementName); elementType = ast.newSimpleType(element); } org.eclipse.jdt.core.dom.Type returnType = elementType; for (int i = 0; i < Type.dimensions(type); i++) { returnType = ast.newArrayType(returnType); } return returnType; }
/* * @see ASTVisitor#visit(PrimitiveType) */ public boolean visit(PrimitiveType node) { this.fBuffer.append(node.getPrimitiveTypeCode().toString()); return false; }
/* * @see ASTVisitor#visit(PrimitiveType) */ @Override public boolean visit(PrimitiveType node) { printTypeAnnotations(node); this.fBuffer.append(node.getPrimitiveTypeCode().toString()); return false; }