/** Case 7: unboxing case: casting to a primitive */ @Override public Void visitTypeCast(TypeCastTree node, Void p) { if (isPrimitive(node) && !isPrimitive(node.getExpression())) { checkForNullability(node.getExpression(), UNBOXING_OF_NULLABLE); } return super.visitTypeCast(node, p); }
@Override public Void visitTypeCast(TypeCastTree tree, AnnotatedTypeMirror type) { if (isUnderlyingTypeAValue(type)) { AnnotatedTypeMirror castedAnnotation = getAnnotatedType(tree.getExpression()); List<?> values = getValues(castedAnnotation, type.getUnderlyingType()); type.replaceAnnotation(resultAnnotationHandler(type.getUnderlyingType(), values, tree)); } else if (type.getKind() == TypeKind.ARRAY) { if (tree.getExpression().getKind() == Kind.NULL_LITERAL) { type.replaceAnnotation(BOTTOMVAL); } } return null; }
@Override public Void visitTypeCast(TypeCastTree node, AnnotatedTypeMirror p) { if (!p.isAnnotated()) { // check if it is casting "this" if (TreeUtils.skipParens(node.getExpression()).toString().equals("this")) { annotateThis(p); } } return super.visitTypeCast(node, p); }