/*
  * @see ASTVisitor#visit(CastExpression)
  */
 public boolean visit(CastExpression node) {
   this.fBuffer.append("("); // $NON-NLS-1$
   node.getType().accept(this);
   this.fBuffer.append(")"); // $NON-NLS-1$
   node.getExpression().accept(this);
   return false;
 }
 /**
  * Checks if the assignment needs a downcast and inserts it if necessary
  *
  * @param expression the right hand-side
  * @param expressionType the type of the right hand-side. Can be null
  * @param ast the AST
  * @param variableType the Type of the variable the expression will be assigned to
  * @param is50OrHigher if <code>true</code> java 5.0 code will be assumed
  * @return the casted expression if necessary
  */
 private static Expression createNarrowCastIfNessecary(
     Expression expression,
     ITypeBinding expressionType,
     AST ast,
     ITypeBinding variableType,
     boolean is50OrHigher) {
   PrimitiveType castTo = null;
   if (variableType.isEqualTo(expressionType)) return expression; // no cast for same type
   if (is50OrHigher) {
     if (ast.resolveWellKnownType("java.lang.Character").isEqualTo(variableType)) // $NON-NLS-1$
     castTo = ast.newPrimitiveType(PrimitiveType.CHAR);
     if (ast.resolveWellKnownType("java.lang.Byte").isEqualTo(variableType)) // $NON-NLS-1$
     castTo = ast.newPrimitiveType(PrimitiveType.BYTE);
     if (ast.resolveWellKnownType("java.lang.Short").isEqualTo(variableType)) // $NON-NLS-1$
     castTo = ast.newPrimitiveType(PrimitiveType.SHORT);
   }
   if (ast.resolveWellKnownType("char").isEqualTo(variableType)) // $NON-NLS-1$
   castTo = ast.newPrimitiveType(PrimitiveType.CHAR);
   if (ast.resolveWellKnownType("byte").isEqualTo(variableType)) // $NON-NLS-1$
   castTo = ast.newPrimitiveType(PrimitiveType.BYTE);
   if (ast.resolveWellKnownType("short").isEqualTo(variableType)) // $NON-NLS-1$
   castTo = ast.newPrimitiveType(PrimitiveType.SHORT);
   if (castTo != null) {
     CastExpression cast = ast.newCastExpression();
     if (ASTNodes.needsParentheses(expression)) {
       ParenthesizedExpression parenthesized = ast.newParenthesizedExpression();
       parenthesized.setExpression(expression);
       cast.setExpression(parenthesized);
     } else cast.setExpression(expression);
     cast.setType(castTo);
     return cast;
   }
   return expression;
 }
 /* (non-Javadoc)
  * @see org.eclipse.jdt.core.dom.ASTVisitor#visit(org.eclipse.jdt.core.dom.CastExpression)
  */
 public boolean visit(CastExpression node) {
   PTCastExpression ct = InstantiationFactory.eINSTANCE.createPTCastExpression();
   ct.setType(resolver.resolveType(node.getType()));
   ct.setExpression(perform(node.getExpression()));
   expression = ct;
   return false;
 }
Пример #4
0
 public CastExpression newCast(Type type, Expression expr) {
   CastExpression cast = ast.newCastExpression();
   cast.setExpression(expr);
   cast.setType(type);
   return cast;
 }
Пример #5
0
 /**
  * Builds a new {@link CastExpression} instance.
  *
  * @param typeName the name of the type being cast to
  * @param expr the expression being cast
  * @return a new CastExpression
  */
 public CastExpression cast(String typeName, Expression expr) {
   final CastExpression ce = ast.newCastExpression();
   ce.setType(type(typeName));
   ce.setExpression(expr);
   return ce;
 }