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 5a4ab76e4db3..30a1e66f4f16 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/UnnecessaryExplicitNumericCastInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/UnnecessaryExplicitNumericCastInspection.java @@ -128,10 +128,7 @@ public class UnnecessaryExplicitNumericCastInspection extends BaseInspection { return; } final PsiType operandType = operand.getType(); - if (operandType == null || operandType.equals(castType)) { - return; - } - if (isPrimitiveNumericCastNecessary(expression)) { + if (castType.equals(operandType) || isPrimitiveNumericCastNecessary(expression)) { return; } final PsiTypeElement typeElement = expression.getCastType(); @@ -151,6 +148,9 @@ public class UnnecessaryExplicitNumericCastInspection extends BaseInspection { return true; } final PsiType operandType = operand.getType(); + if (operandType == null) { + return true; + } PsiElement parent = expression.getParent(); while (parent instanceof PsiParenthesizedExpression) { parent = parent.getParent(); diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ClassUtils.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ClassUtils.java index 03ab992bc0a0..9bbc5b6065a5 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ClassUtils.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ClassUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2012 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2013 Dave Griffith, Bas Leijdekkers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,6 +18,7 @@ package com.siyeh.ig.psiutils; import com.intellij.psi.*; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.TypeConversionUtil; +import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.Nullable; import java.util.HashSet; @@ -148,7 +149,8 @@ public class ClassUtils { return inSamePackage(fieldClass, fromClass); } - public static boolean isPrimitiveNumericType(PsiType type) { + @Contract("null -> false") + public static boolean isPrimitiveNumericType(@Nullable PsiType type) { return primitiveNumericTypes.contains(type); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/TypeUtils.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/TypeUtils.java index 51a650461481..6c39ca9b6ad9 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/TypeUtils.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/TypeUtils.java @@ -65,7 +65,7 @@ public class TypeUtils { return getType(CommonClassNames.JAVA_LANG_STRING, context); } - public static boolean isNarrowingConversion(PsiType operandType, PsiType castType) { + public static boolean isNarrowingConversion(@NotNull PsiType operandType, @NotNull PsiType castType) { final Integer operandPrecision = typePrecisions.get(operandType); final Integer castPrecision = typePrecisions.get(castType); return operandPrecision.intValue() > castPrecision.intValue(); 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 26cc95afef11..a625c87f7062 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 @@ -63,4 +63,8 @@ public class UnnecessaryExplicitNumericCast { int i() { return 10; } + + boolean redundantTypeCast(long l) { + return 0L == (long)l; + } }