diff --git a/java/java-psi-api/src/com/intellij/psi/util/RedundantCastUtil.java b/java/java-psi-api/src/com/intellij/psi/util/RedundantCastUtil.java index 32f8805df501..c5d87d650e5f 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/RedundantCastUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/util/RedundantCastUtil.java @@ -469,17 +469,22 @@ public class RedundantCastUtil { final PsiType topCastType = typeCast.getType(); if (expr instanceof PsiTypeCastExpression) { - PsiTypeElement typeElement = ((PsiTypeCastExpression)expr).getCastType(); + PsiTypeCastExpression innerCast = (PsiTypeCastExpression)expr; + PsiTypeElement typeElement = innerCast.getCastType(); if (typeElement == null) return; PsiType castType = typeElement.getType(); - final PsiExpression innerOperand = ((PsiTypeCastExpression)expr).getOperand(); + final PsiExpression innerOperand = innerCast.getOperand(); final PsiType operandType = innerOperand != null ? innerOperand.getType() : null; if (!(castType instanceof PsiPrimitiveType) && !(topCastType instanceof PsiPrimitiveType)) { if (operandType != null && topCastType != null && TypeConversionUtil.areTypesConvertible(operandType, topCastType)) { - addToResults((PsiTypeCastExpression)expr); + addToResults(innerCast); } } else if (Comparing.equal(PsiPrimitiveType.getUnboxedType(operandType), topCastType)) { - addToResults((PsiTypeCastExpression)expr); + addToResults(innerCast); + } + else if (operandType != null && operandType.equals(castType)) { + // like (int)(long)1L + addToResults(innerCast); } } else { diff --git a/java/java-tests/testData/inspection/redundantCast/generics/CastLongLiteral.java b/java/java-tests/testData/inspection/redundantCast/generics/CastLongLiteral.java new file mode 100644 index 000000000000..24c58ff340a0 --- /dev/null +++ b/java/java-tests/testData/inspection/redundantCast/generics/CastLongLiteral.java @@ -0,0 +1,7 @@ +import org.jetbrains.annotations.*; + +class A { + void method() { + int v = (int)(long)1L; + } +} \ 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 945b74b6aba7..7f561786c495 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInspection/RedundantCast15Test.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInspection/RedundantCast15Test.java @@ -80,4 +80,5 @@ public class RedundantCast15Test extends LightCodeInsightFixtureTestCase { public void testDifferentNullness() { doTest();} public void testPrimitiveWidening() { doTest(); } + public void testCastLongLiteral() { doTest(); } } \ No newline at end of file