diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/ControlFlowAnalyzer.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/ControlFlowAnalyzer.java
index f3c28c2cda4f..7d8f4fb4562e 100644
--- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/ControlFlowAnalyzer.java
+++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/ControlFlowAnalyzer.java
@@ -1852,7 +1852,7 @@ public class ControlFlowAnalyzer extends JavaElementVisitor {
qualifier.accept(this);
} else {
PsiClass aClass = PsiUtil.resolveClassInClassTypeOnly(expression.getType());
- if (aClass != null) {
+ if (aClass != null && !aClass.hasModifierProperty(PsiModifier.STATIC)) {
PsiClass outerClass = aClass.getContainingClass();
if (outerClass != null && InheritanceUtil.hasEnclosingInstanceInScope(outerClass, expression, true, false)) {
qualifierValue = myFactory.getVarFactory().createThisValue(outerClass);
diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/FieldRewrittenInInner.java b/java/java-tests/testData/inspection/dataFlow/fixture/FieldRewrittenInInner.java
index 4259d5e70835..a330a513c3cd 100644
--- a/java/java-tests/testData/inspection/dataFlow/fixture/FieldRewrittenInInner.java
+++ b/java/java-tests/testData/inspection/dataFlow/fixture/FieldRewrittenInInner.java
@@ -27,6 +27,16 @@ class Tester
System.err.println("Is false");
}
+ private Tester(int i)
+ {
+ // nested class: should not drop locality ('this' is not leaked)
+ new Nested();
+ if (flag)
+ System.err.println("Is true.");
+ else
+ System.err.println("Is false");
+ }
+
class Inner
{
Inner()
@@ -34,4 +44,12 @@ class Tester
flag = true;
}
}
+
+ static class Nested
+ {
+ Nested()
+ {
+ flag = true; // cannot access flag
+ }
+ }
}
\ No newline at end of file