diff --git a/java/java-psi-impl/src/com/intellij/psi/controlFlow/ControlFlowAnalyzer.java b/java/java-psi-impl/src/com/intellij/psi/controlFlow/ControlFlowAnalyzer.java index 2b566b18b45f..af1dd8c5176d 100644 --- a/java/java-psi-impl/src/com/intellij/psi/controlFlow/ControlFlowAnalyzer.java +++ b/java/java-psi-impl/src/com/intellij/psi/controlFlow/ControlFlowAnalyzer.java @@ -1307,6 +1307,11 @@ class ControlFlowAnalyzer extends JavaElementVisitor { startElement(lExpr); } + PsiExpression qualifier = ((PsiReferenceExpression)lExpr).getQualifierExpression(); + if (qualifier != null) { + qualifier.accept(this); + } + if (expression.getOperationTokenType() != JavaTokenType.EQ) { generateReadInstruction(variable); } diff --git a/java/java-tests/testData/inspection/fieldCanBeLocal/fieldUsedInAnotherMethodAsQualifier/expected.xml b/java/java-tests/testData/inspection/fieldCanBeLocal/fieldUsedInAnotherMethodAsQualifier/expected.xml new file mode 100644 index 000000000000..4704d91e891d --- /dev/null +++ b/java/java-tests/testData/inspection/fieldCanBeLocal/fieldUsedInAnotherMethodAsQualifier/expected.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/java/java-tests/testData/inspection/fieldCanBeLocal/fieldUsedInAnotherMethodAsQualifier/src/Test.java b/java/java-tests/testData/inspection/fieldCanBeLocal/fieldUsedInAnotherMethodAsQualifier/src/Test.java new file mode 100644 index 000000000000..04cb4de75ba3 --- /dev/null +++ b/java/java-tests/testData/inspection/fieldCanBeLocal/fieldUsedInAnotherMethodAsQualifier/src/Test.java @@ -0,0 +1,15 @@ +class D { + D first; +} + +class Test { + private D myDSettings; + + protected void setUp() { + myDSettings = null; + } + + public void testModuleCycle() { + myDSettings.first = null; + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/FieldCanBeLocalTest.java b/java/java-tests/testSrc/com/intellij/codeInspection/FieldCanBeLocalTest.java index 29a0a831087f..66670ec1eef5 100644 --- a/java/java-tests/testSrc/com/intellij/codeInspection/FieldCanBeLocalTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInspection/FieldCanBeLocalTest.java @@ -46,6 +46,10 @@ public class FieldCanBeLocalTest extends InspectionTestCase { doTestConfigured(inspection); } + public void testFieldUsedInAnotherMethodAsQualifier() throws Exception { + doTest(); + } + private void doTestConfigured(FieldCanBeLocalInspection inspection) { inspection.EXCLUDE_ANNOS.add(Deprecated.class.getName()); doTest("fieldCanBeLocal/" + getTestName(true), inspection);