MetadataHelper.getConversionType(topCastType, innerOperandType) != ConversionType.NONE) { addToResults(innerCast, false); addToResults(node, false); addToResults(innerCast, true); addToResults(innerCast, true); addToResults(innerCast, true); MetadataHelper.getNumericConversionType(topCastType, innerOperandType) == ConversionType.IMPLICIT) { addToResults(innerCast, true);
MetadataHelper.getConversionType(topCastType, innerOperandType) != ConversionType.NONE) { addToResults(innerCast, false); addToResults(node, false); addToResults(innerCast, true); addToResults(innerCast, true); addToResults(innerCast, true); MetadataHelper.getNumericConversionType(topCastType, innerOperandType) == ConversionType.IMPLICIT) { addToResults(innerCast, true);
MetadataHelper.getConversionType(topCastType, innerOperandType).isDirect()) { addToResults(innerCast, false); addToResults(node, false); addToResults(innerCast, true); addToResults(innerCast, true); addToResults(innerCast, true); addToResults(innerCast, true); addToResults(innerCast, true);
MetadataHelper.getArrayRank(operandType) == MetadataHelper.getArrayRank(castTo)) { addToResults(cast, false); addToResults(cast, false);
MetadataHelper.getArrayRank(operandType) == MetadataHelper.getArrayRank(castTo)) { addToResults(cast, false); addToResults(cast, false);
MetadataHelper.getArrayRank(operandType) == MetadataHelper.getArrayRank(castTo)) { addToResults(cast, false); addToResults(cast, false);
addToResults((CastExpression) r, false); return; isValidPrimitiveLiteralAssignment(unboxedCastType, rr.getConstantValue())) { addToResults((CastExpression) r, true);
protected void processPossibleTypeCast(final Expression rightExpression, @Nullable final TypeReference leftType) { if (leftType == null) { return; } final Expression r = removeParentheses(rightExpression); if (r instanceof CastExpression) { final AstType castAstType = ((CastExpression) r).getType(); final TypeReference castType = castAstType != null ? castAstType.toTypeReference() : null; final Expression castOperand = ((CastExpression) r).getExpression(); if (castOperand != null && !castOperand.isNull() && castType != null) { final TypeReference operandType = getType(castOperand); if (operandType != null) { if (MetadataHelper.isAssignableFrom(leftType, operandType, false)) { addToResults((CastExpression) r, false); } else { final TypeReference unboxedCastType = MetadataHelper.getUnderlyingPrimitiveTypeOrSelf(castType); final TypeReference unboxedLeftType = MetadataHelper.getUnderlyingPrimitiveTypeOrSelf(leftType); if (castOperand instanceof PrimitiveExpression && TypeUtilities.isValidPrimitiveLiteralAssignment(unboxedCastType, ((PrimitiveExpression) castOperand).getValue()) && TypeUtilities.isValidPrimitiveLiteralAssignment(unboxedLeftType, ((PrimitiveExpression) castOperand).getValue())) { addToResults((CastExpression) r, true); } } } } } }
protected void processPossibleTypeCast(final Expression rightExpression, @Nullable final TypeReference leftType) { if (leftType == null) { return; } final Expression r = removeParentheses(rightExpression); if (r instanceof CastExpression) { final AstType castAstType = ((CastExpression) r).getType(); final TypeReference castType = castAstType != null ? castAstType.toTypeReference() : null; final Expression castOperand = ((CastExpression) r).getExpression(); if (castOperand != null && !castOperand.isNull() && castType != null) { final TypeReference operandType = getType(castOperand); if (operandType != null) { if (MetadataHelper.isAssignableFrom(leftType, operandType, false)) { addToResults((CastExpression) r, false); } else { final TypeReference unboxedCastType = MetadataHelper.getUnderlyingPrimitiveTypeOrSelf(castType); final TypeReference unboxedLeftType = MetadataHelper.getUnderlyingPrimitiveTypeOrSelf(leftType); if (castOperand instanceof PrimitiveExpression && TypeUtilities.isValidPrimitiveLiteralAssignment(unboxedCastType, ((PrimitiveExpression) castOperand).getValue()) && TypeUtilities.isValidPrimitiveLiteralAssignment(unboxedLeftType, ((PrimitiveExpression) castOperand).getValue())) { addToResults((CastExpression) r, true); } } } } } }
private void processArrayInitializer(final ArrayInitializerExpression node) { final TypeReference expectedArrayType = getExpectedTypeByParent(_resolver, node); if (expectedArrayType == null || !expectedArrayType.isArray()) { return; } final TypeReference target = expectedArrayType.getElementType(); for (final Expression element : node.getElements()) { if (element instanceof CastExpression) { final Expression value = ((CastExpression) element).getExpression(); final TypeReference middle = getType(element); final TypeReference source = getType(value); if (middle != null && source != null && getConversion(target, middle, null).isImplicit() && getConversion(target, source, value).isImplicit() && getConversion(source, middle, null).isImplicit()) { final ConversionType sourceToMiddle = getConversion(middle, source, value); if (sourceToMiddle.isImplicit() && sourceToMiddle.isLossless()) { addToResults((CastExpression) element, false); } } } } }
protected void processBinaryExpressionOperand( final Expression operand, final TypeReference otherType, final BinaryOperatorType op) { if (operand instanceof CastExpression) { final CastExpression cast = (CastExpression) operand; final Expression toCast = cast.getExpression(); final TypeReference castType = getType(cast); final TypeReference innerType = getType(toCast); if (castType != null && innerType != null && TypeUtilities.isBinaryOperatorApplicable(op, innerType, otherType, false)) { addToResults(cast, false); } } }
protected void processBinaryExpressionOperand( final Expression operand, final TypeReference otherType, final BinaryOperatorType op) { if (operand instanceof CastExpression) { final CastExpression cast = (CastExpression) operand; final Expression toCast = cast.getExpression(); final TypeReference castType = getType(cast); final TypeReference innerType = getType(toCast); if (castType != null && innerType != null && TypeUtilities.isBinaryOperatorApplicable(op, innerType, otherType, false)) { addToResults(cast, false); } } }