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 89c81fba339e..9143b85ced18 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 @@ -512,8 +512,7 @@ public class RedundantCastUtil { final PsiExpression thenExpression = ((PsiConditionalExpression)parent).getThenExpression(); final PsiExpression elseExpression = ((PsiConditionalExpression)parent).getElseExpression(); final PsiExpression opposite = thenExpression == typeCast ? elseExpression : thenExpression; - if (opposite == null || conditionalType instanceof PsiPrimitiveType && - !Comparing.equal(conditionalType, opposite.getType())) return; + if (opposite == null || !Comparing.equal(conditionalType, opposite.getType())) return; } } else if (parent instanceof PsiSynchronizedStatement && diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting6/RedundantCastInConditionalExpression.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting6/RedundantCastInConditionalExpression.java index ef3fe36af8d0..f4fefcdbaaea 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting6/RedundantCastInConditionalExpression.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting6/RedundantCastInConditionalExpression.java @@ -6,3 +6,17 @@ class Foo { System.out.println(s); } } + + +class NonPrimitiveType { + @SuppressWarnings("unchecked") + public void apply(Fun, ?> defaultGetter, + Class configType, + Fun, T> getter) { + (getter == null ? (Fun)defaultGetter : getter).apply(configType); + } + + interface Fun { + R apply(T t); + } +}