diff --git a/java/java-psi-impl/src/com/intellij/psi/controlFlow/LocalsOrMyInstanceFieldsControlFlowPolicy.java b/java/java-psi-impl/src/com/intellij/psi/controlFlow/LocalsOrMyInstanceFieldsControlFlowPolicy.java
index 86b82a0bc4ec..85a7fd8a6d99 100644
--- a/java/java-psi-impl/src/com/intellij/psi/controlFlow/LocalsOrMyInstanceFieldsControlFlowPolicy.java
+++ b/java/java-psi-impl/src/com/intellij/psi/controlFlow/LocalsOrMyInstanceFieldsControlFlowPolicy.java
@@ -17,6 +17,7 @@
package com.intellij.psi.controlFlow;
import com.intellij.psi.*;
+import com.intellij.psi.util.PsiUtil;
import com.intellij.util.ObjectUtils;
import org.jetbrains.annotations.NotNull;
@@ -55,7 +56,7 @@ public class LocalsOrMyInstanceFieldsControlFlowPolicy implements ControlFlowPol
* the reference actually resolves to variable.
*/
public static boolean isLocalOrMyInstanceReference(PsiReferenceExpression variableReference) {
- PsiExpression qualifierExpression = variableReference.getQualifierExpression();
+ PsiExpression qualifierExpression = PsiUtil.skipParenthesizedExprDown(variableReference.getQualifierExpression());
// JLS 16: "Such an assignment is defined to occur if and only if either the simple name of the variable
// (or, for a field, its simple name qualified by this) occurs on the left hand side of an assignment operator"
// Qualified this is not allowed by spec
diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/AssignToFinal.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/AssignToFinal.java
index c648224d9818..90d435feeb14 100644
--- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/AssignToFinal.java
+++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/AssignToFinal.java
@@ -255,10 +255,10 @@ class QualifiedThis {
class ParenthesizedThis {
final int x;
- final int y = (this).x + 1; // allowed as qualifier is not naked 'this'!
+ final int y = (this).x + 1; // javac allows this?
ParenthesizedThis() {
- (this).x = 5;
- this.x = 6;
+ (this).x = 5;
+ this.x = 6;
}
}
\ No newline at end of file