// 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()));
     }
   }
 }
Ejemplo n.º 2
0
 @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;
 }
Ejemplo n.º 3
0
  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;
 }