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 b8f810611201..e75e488f83ea 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 @@ -1262,13 +1262,12 @@ class ControlFlowAnalyzer extends JavaElementVisitor { myStartStatementStack.pushStatement(expression.getRExpression() == null ? expression : expression.getRExpression(), false); myEndStatementStack.pushStatement(expression.getRExpression() == null ? expression : expression.getRExpression(), false); - PsiExpression rExpr = expression.getRExpression(); - if (rExpr != null) { - rExpr.accept(this); - } - PsiExpression lExpr = PsiUtil.skipParenthesizedExprDown(expression.getLExpression()); if (lExpr instanceof PsiReferenceExpression) { + PsiExpression rExpr = expression.getRExpression(); + if (rExpr != null) { + rExpr.accept(this); + } final PsiReferenceExpression referenceExpression = (PsiReferenceExpression)lExpr; PsiExpression qualifierExpression = referenceExpression.getQualifierExpression(); PsiVariable variable = getUsedVariable(referenceExpression); @@ -1293,6 +1292,10 @@ class ControlFlowAnalyzer extends JavaElementVisitor { } else if (lExpr != null) { lExpr.accept(this); + PsiExpression rExpr = expression.getRExpression(); + if (rExpr != null) { + rExpr.accept(this); + } } myStartStatementStack.popStatement(); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting6/InitializedBeforeUsed.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting6/InitializedBeforeUsed.java new file mode 100644 index 000000000000..5a19cfc08e73 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting6/InitializedBeforeUsed.java @@ -0,0 +1,7 @@ +class Test { + public static void main(String[] args) { + int i; + int[] iA = {10,20}; + iA[i] = i = 30; + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingJdk6Test.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingJdk6Test.java index cf8747722551..bd55b8cab5e4 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingJdk6Test.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingJdk6Test.java @@ -63,4 +63,8 @@ public class LightAdvHighlightingJdk6Test extends LightDaemonAnalyzerTestCase { public void testAgentPremain() { doTest(false, false); } + + public void testInitializedBeforeUsed() throws Exception { + doTest(false, false); + } }