From e640c100837fab39999c7e2d2833d7a07cb64b72 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Fri, 7 Apr 2017 11:24:04 +0200 Subject: [PATCH] IG: ignore casting class types to primitive (IDEA-170332) --- .../UnnecessaryExplicitNumericCastInspection.java | 3 ++- .../UnnecessaryExplicitNumericCast.java | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/UnnecessaryExplicitNumericCastInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/UnnecessaryExplicitNumericCastInspection.java index 14c0ad240403..7686bf6bb8de 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/UnnecessaryExplicitNumericCastInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/UnnecessaryExplicitNumericCastInspection.java @@ -121,6 +121,7 @@ public class UnnecessaryExplicitNumericCastInspection extends BaseInspection { } final PsiType operandType = operand.getType(); if (castType.equals(operandType) || isPrimitiveNumericCastNecessary(expression)) { + // equal types is caught by "Redundant type cast" inspection return; } final PsiTypeElement typeElement = expression.getCastType(); @@ -140,7 +141,7 @@ public class UnnecessaryExplicitNumericCastInspection extends BaseInspection { return true; } final PsiType operandType = operand.getType(); - if (operandType == null) { + if (!(operandType instanceof PsiPrimitiveType)) { return true; } PsiElement parent = expression.getParent(); diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/numeric/unnecessary_explicit_numeric_cast/UnnecessaryExplicitNumericCast.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/numeric/unnecessary_explicit_numeric_cast/UnnecessaryExplicitNumericCast.java index f055a845e11a..762768495d39 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/numeric/unnecessary_explicit_numeric_cast/UnnecessaryExplicitNumericCast.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/numeric/unnecessary_explicit_numeric_cast/UnnecessaryExplicitNumericCast.java @@ -88,3 +88,17 @@ enum Numeric { Numeric(byte b) {} } +class S { + + static void doSomething() { + // V --- this cast is reported as unnecessary + if ( (int) whatever() < 0 ) { + } + } + + @SuppressWarnings("unchecked") + private static T whatever() { + return (T) (Object) 0; + } + +} \ No newline at end of file