"Move assignment to field declaration" intention CCE fix

This commit is contained in:
Bas Leijdekkers
2013-09-03 21:47:43 +02:00
parent 5ce8e21c27
commit d273f7d591
4 changed files with 24 additions and 3 deletions
@@ -133,13 +133,14 @@ public class MoveFieldAssignmentToInitializerAction extends BaseIntentionAction
if (!PsiUtil.isOnAssignmentLeftHand(reference)) return;
PsiElement resolved = reference.resolve();
if (resolved != field) return;
PsiExpression rValue = ((PsiAssignmentExpression)reference.getParent()).getRExpression();
PsiAssignmentExpression assignmentExpression = PsiTreeUtil.getParentOfType(reference, PsiAssignmentExpression.class);
PsiExpression rValue = assignmentExpression.getRExpression();
if (currentInitializingBlock != null) {
// ignore usages other than initializing
if (rValue == null || !PsiEquivalenceUtil.areElementsEquivalent(rValue, expression)) {
result.set(Boolean.FALSE);
}
initializingAssignments.add((PsiAssignmentExpression)reference.getParent());
initializingAssignments.add(assignmentExpression);
}
totalUsages.add(assignment);
}
@@ -153,7 +154,7 @@ public class MoveFieldAssignmentToInitializerAction extends BaseIntentionAction
}
private static PsiField getAssignedField(final PsiAssignmentExpression assignment) {
PsiExpression lExpression = assignment.getLExpression();
PsiExpression lExpression = PsiUtil.skipParenthesizedExprDown(assignment.getLExpression());
if (!(lExpression instanceof PsiReferenceExpression)) return null;
PsiElement resolved = ((PsiReferenceExpression)lExpression).resolve();
if (!(resolved instanceof PsiField)) return null;
@@ -0,0 +1,6 @@
// "Move assignment to field declaration" "true"
public class X {
int i = 0;
{
}
}
@@ -0,0 +1,7 @@
// "Move assignment to field declaration" "false"
public class X {
int i;
{
<caret>i=(i)=0; // don't throw exception
}
}
@@ -0,0 +1,7 @@
// "Move assignment to field declaration" "true"
public class X {
int i;
{
(i)=<caret>0;
}
}