diff --git a/java/java-tests/testData/inspection/redundantCast/FieldAccessOnTheLeftOfAssignment/expected.xml b/java/java-tests/testData/inspection/redundantCast/FieldAccessOnTheLeftOfAssignment/expected.xml new file mode 100644 index 000000000000..2d8028a433d5 --- /dev/null +++ b/java/java-tests/testData/inspection/redundantCast/FieldAccessOnTheLeftOfAssignment/expected.xml @@ -0,0 +1,16 @@ + + + + A.java + 6 + Casting <code>t</code> to <code>Foo</code> is redundant + + + + A.java + 5 + Casting <code>t</code> to <code>Foo</code> is redundant + + + + diff --git a/java/java-tests/testData/inspection/redundantCast/FieldAccessOnTheLeftOfAssignment/src/A.java b/java/java-tests/testData/inspection/redundantCast/FieldAccessOnTheLeftOfAssignment/src/A.java new file mode 100644 index 000000000000..238f711f27b9 --- /dev/null +++ b/java/java-tests/testData/inspection/redundantCast/FieldAccessOnTheLeftOfAssignment/src/A.java @@ -0,0 +1,11 @@ +abstract class Foo { + protected int field; + + public int f(Bar t){ + ((Foo)t).field = 0; + return ((Foo)t).field; + } + +} + +class Bar extends Foo{} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/RedundantCastTest.java b/java/java-tests/testSrc/com/intellij/codeInspection/RedundantCastTest.java index 1d3c21f07f1a..8569b20f9adc 100644 --- a/java/java-tests/testSrc/com/intellij/codeInspection/RedundantCastTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInspection/RedundantCastTest.java @@ -88,6 +88,7 @@ public class RedundantCastTest extends InspectionTestCase { public void testIDEADEV15170() throws Exception { doTest(); } public void testIDEADEV25675() throws Exception { doTest(); } + public void testFieldAccessOnTheLeftOfAssignment() throws Exception { doTest(); } public void testNestedCast() throws Exception { doTest(); } public void testPrimitiveInsideSynchronized() throws Exception { doTest(); } diff --git a/java/openapi/src/com/intellij/psi/util/RedundantCastUtil.java b/java/openapi/src/com/intellij/psi/util/RedundantCastUtil.java index 71e45859578c..dfb44721dd25 100644 --- a/java/openapi/src/com/intellij/psi/util/RedundantCastUtil.java +++ b/java/openapi/src/com/intellij/psi/util/RedundantCastUtil.java @@ -476,7 +476,7 @@ public class RedundantCastUtil { PsiAssignmentExpression assignment = PsiTreeUtil.getParentOfType(element, PsiAssignmentExpression.class, false, PsiMember.class); if (assignment == null) return false; PsiExpression lExpression = assignment.getLExpression(); - return PsiTreeUtil.isAncestor(lExpression, element, false); + return PsiTreeUtil.isAncestor(lExpression, element, false) && lExpression instanceof PsiArrayAccessExpression; } }