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 9afe09091084..8498097940a9 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 @@ -721,7 +721,7 @@ public class RedundantCastUtil { 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)) { + if (oppositeType != null && TypeConversionUtil.isBinaryOperatorApplicable(((PsiBinaryExpression)parent).getOperationTokenType(), opType, oppositeType, false)) { addToResults(typeCast); } } diff --git a/java/java-tests/testData/inspection/redundantCast/lambda/BinaryConversions.java b/java/java-tests/testData/inspection/redundantCast/lambda/BinaryConversions.java new file mode 100644 index 000000000000..e520a38bd11f --- /dev/null +++ b/java/java-tests/testData/inspection/redundantCast/lambda/BinaryConversions.java @@ -0,0 +1,9 @@ +class Test { + void m(Object a) { + if ((Boolean)a && (Boolean)a) { } + } + + Object concat(Object x, Object y) { + return x + (String) y; + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInspection/RedundantCast18Test.java b/java/java-tests/testSrc/com/intellij/java/codeInspection/RedundantCast18Test.java index 66dc26691702..15a5eb4aedc3 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInspection/RedundantCast18Test.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInspection/RedundantCast18Test.java @@ -46,4 +46,5 @@ public class RedundantCast18Test extends LightDaemonAnalyzerTestCase { public void testCastWithClassHierarchyWithPrivateMethods() { doTest(); } public void testFieldInitializer() { doTest();} public void testDiamondWithUpperBounds() { doTest();} + public void testBinaryConversions() { doTest();} } \ No newline at end of file