replace assignment with operator: preserve comments

This commit is contained in:
Anna Kozlova
2018-08-20 17:07:49 +03:00
parent b12c3abbb2
commit 69925d6f41
@@ -25,6 +25,7 @@ import com.siyeh.ig.BaseInspection;
import com.siyeh.ig.BaseInspectionVisitor;
import com.siyeh.ig.InspectionGadgetsFix;
import com.siyeh.ig.PsiReplacementUtil;
import com.siyeh.ig.psiutils.CommentTracker;
import com.siyeh.ig.psiutils.EquivalenceChecker;
import com.siyeh.ig.psiutils.ParenthesesUtils;
import org.jetbrains.annotations.NotNull;
@@ -64,7 +65,7 @@ public class ReplaceAssignmentWithOperatorAssignmentInspection extends BaseInspe
final PsiPolyadicExpression polyadicExpression = (PsiPolyadicExpression)infos[1];
return InspectionGadgetsBundle.message(
"assignment.replaceable.with.operator.assignment.problem.descriptor",
calculateReplacementExpression(lhs, polyadicExpression));
calculateReplacementExpression(lhs, polyadicExpression, new CommentTracker()));
}
@Override
@@ -80,7 +81,9 @@ public class ReplaceAssignmentWithOperatorAssignmentInspection extends BaseInspe
return optionsPanel;
}
static String calculateReplacementExpression(PsiExpression lhs, PsiPolyadicExpression polyadicExpression) {
static String calculateReplacementExpression(PsiExpression lhs,
PsiPolyadicExpression polyadicExpression,
CommentTracker ct) {
final PsiExpression[] operands = polyadicExpression.getOperands();
final PsiJavaToken sign = polyadicExpression.getTokenBeforeOperand(operands[1]);
String signText = sign.getText();
@@ -90,7 +93,7 @@ public class ReplaceAssignmentWithOperatorAssignmentInspection extends BaseInspe
else if ("||".equals(signText)) {
signText = "|";
}
final StringBuilder text = new StringBuilder(lhs.getText());
final StringBuilder text = new StringBuilder(ct.text(lhs));
text.append(' ');
text.append(signText);
text.append("= ");
@@ -108,7 +111,7 @@ public class ReplaceAssignmentWithOperatorAssignmentInspection extends BaseInspe
else {
addToken = true;
}
text.append(operand.getText());
text.append(ct.text(operand));
}
return text.toString();
}
@@ -168,9 +171,10 @@ public class ReplaceAssignmentWithOperatorAssignmentInspection extends BaseInspe
if (!(rhs instanceof PsiPolyadicExpression)) {
return;
}
CommentTracker ct = new CommentTracker();
final PsiPolyadicExpression polyadicExpression = (PsiPolyadicExpression)rhs;
final String newExpression = calculateReplacementExpression(lhs, polyadicExpression);
PsiReplacementUtil.replaceExpression(expression, newExpression);
final String newExpression = calculateReplacementExpression(lhs, polyadicExpression, ct);
PsiReplacementUtil.replaceExpression(expression, newExpression, ct);
}
}