diff --git a/java/java-analysis-impl/src/com/intellij/psi/util/RedundantCastUtil.java b/java/java-analysis-impl/src/com/intellij/psi/util/RedundantCastUtil.java index aa3cb09f4f93..1231d6008645 100644 --- a/java/java-analysis-impl/src/com/intellij/psi/util/RedundantCastUtil.java +++ b/java/java-analysis-impl/src/com/intellij/psi/util/RedundantCastUtil.java @@ -697,6 +697,14 @@ public class RedundantCastUtil { addToResults(typeCast); } } + else if (parent instanceof PsiBinaryExpression) { + PsiExpression lOperand = ((PsiBinaryExpression)parent).getLOperand(); + PsiExpression rOperand = ((PsiBinaryExpression)parent).getROperand(); + PsiType oppositeType = lOperand == typeCast ? rOperand != null ? rOperand.getType() : null : lOperand.getType(); + if (oppositeType != null && TypeConversionUtil.areTypesConvertible(opType, oppositeType)) { + addToResults(typeCast); + } + } else if (TypeConversionUtil.isAssignable(castTo, opType, false) && (expectedTypeByParent == null || TypeConversionUtil.isAssignable(expectedTypeByParent, opType, false))) { addToResults(typeCast); diff --git a/java/java-tests/testData/inspection/redundantCast/generics/BinaryComparison.java b/java/java-tests/testData/inspection/redundantCast/generics/BinaryComparison.java new file mode 100644 index 000000000000..67653cc9e480 --- /dev/null +++ b/java/java-tests/testData/inspection/redundantCast/generics/BinaryComparison.java @@ -0,0 +1,9 @@ +class MyClass { + public Class getValueClass() { + return null; + } + + public boolean isBooleanClass() { + return (Class) getValueClass() == Boolean.class; + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInspection/RedundantCast15Test.java b/java/java-tests/testSrc/com/intellij/java/codeInspection/RedundantCast15Test.java index 7f561786c495..c05db4f57de8 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInspection/RedundantCast15Test.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInspection/RedundantCast15Test.java @@ -55,6 +55,7 @@ public class RedundantCast15Test extends LightCodeInsightFixtureTestCase { public void testForEachValueIDEA126166() { doTest();} public void testCaseThrowable() { doTest();} public void testSafeTempVarName() { doTest();} + public void testBinaryComparison() { doTest();} public void testTypeParameterAccessChecksJava7() { doTest();