ignore parenthesis when building control flow (IDEA-156926)

This commit is contained in:
Anna Kozlova
2016-06-01 21:19:15 +03:00
parent d74f07e07c
commit a82e3bb5e6
3 changed files with 16 additions and 1 deletions
@@ -25,6 +25,7 @@
package com.intellij.psi.controlFlow;
import com.intellij.psi.*;
import com.intellij.psi.util.PsiUtil;
import org.jetbrains.annotations.NotNull;
public class LocalsOrMyInstanceFieldsControlFlowPolicy implements ControlFlowPolicy {
@@ -35,7 +36,7 @@ public class LocalsOrMyInstanceFieldsControlFlowPolicy implements ControlFlowPol
@Override
public PsiVariable getUsedVariable(@NotNull PsiReferenceExpression refExpr) {
PsiExpression qualifier = refExpr.getQualifierExpression();
PsiExpression qualifier = PsiUtil.skipParenthesizedExprDown(refExpr.getQualifierExpression());
if (qualifier == null || qualifier instanceof PsiThisExpression) {
PsiElement resolved = refExpr.resolve();
if (!(resolved instanceof PsiVariable)) return null;
@@ -0,0 +1,11 @@
class Unassigned {
public final int a;
public int b;
Unassigned(int value) {
b = <error descr="Variable '(this).a' might not have been initialized">(this).a</error>;
a = value;
}
}
@@ -72,4 +72,7 @@ public class LightAdvHighlightingJdk6Test extends LightDaemonAnalyzerTestCase {
public void testSkipAbstractMethodsIfTheyMustBeDeclaredInNonAbstractSuperclass() {
doTest(false, false);
}
public void testVariableUsedBeforeAssignmentWithParenthesis() {
doTest(false, false);
}
}