IDEA-116732 Field can be converted to a local variable

This commit is contained in:
anna
2013-12-02 18:58:53 +01:00
parent 96f18ecdfe
commit c9359cf149
4 changed files with 16 additions and 5 deletions
@@ -1270,10 +1270,11 @@ class ControlFlowAnalyzer extends JavaElementVisitor {
PsiExpression lExpr = PsiUtil.skipParenthesizedExprDown(expression.getLExpression());
if (lExpr instanceof PsiReferenceExpression) {
final PsiReferenceExpression referenceExpression = (PsiReferenceExpression)lExpr;
if (!referenceExpression.isQualified()
|| referenceExpression.getQualifierExpression() instanceof PsiThisExpression) {
PsiVariable variable = getUsedVariable(referenceExpression);
PsiExpression qualifierExpression = referenceExpression.getQualifierExpression();
PsiVariable variable = getUsedVariable(referenceExpression);
if (qualifierExpression == null ||
qualifierExpression instanceof PsiThisExpression ||
variable instanceof PsiField && variable.hasModifierProperty(PsiModifier.STATIC)) {
if (variable != null) {
if (myAssignmentTargetsAreElements)
startElement(lExpr);
@@ -1285,7 +1286,6 @@ class ControlFlowAnalyzer extends JavaElementVisitor {
if (myAssignmentTargetsAreElements) finishElement(lExpr);
}
}
else {
lExpr.accept(this); //?
@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<problems>
</problems>
@@ -0,0 +1,7 @@
class G{
private static boolean foo = true;
static void bar(){
if(foo)
G.foo = false;
}
}
@@ -38,6 +38,7 @@ public class FieldCanBeLocalTest extends InspectionTestCase {
public void testFieldUsedInConstantInitialization() throws Exception {doTest();}
public void testFieldWithImmutableType() throws Exception {doTest();}
public void testFieldUsedForWritingInLambda() throws Exception {doTest();}
public void testStaticQualifiedFieldAccessForWriting() throws Exception {doTest();}
public void testIgnoreAnnotated() throws Exception {
final FieldCanBeLocalInspection inspection = new FieldCanBeLocalInspection();
doTestConfigured(inspection);