mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-05-06 05:10:22 +07:00
DeleteSideEffectsAwareFix: handle comments
This commit is contained in:
@@ -24,6 +24,7 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.siyeh.ig.psiutils.CommentTracker;
|
||||
import com.siyeh.ig.psiutils.SideEffectChecker;
|
||||
import com.siyeh.ig.psiutils.StatementExtractor;
|
||||
import org.jetbrains.annotations.Nls;
|
||||
@@ -95,6 +96,8 @@ public class DeleteSideEffectsAwareFix extends LocalQuickFixAndIntentionActionOn
|
||||
PsiExpression expression = myExpressionPtr.getElement();
|
||||
if (expression == null) return;
|
||||
List<PsiExpression> sideEffects = SideEffectChecker.extractSideEffectExpressions(expression);
|
||||
CommentTracker ct = new CommentTracker();
|
||||
sideEffects.forEach(ct::markUnchanged);
|
||||
PsiStatement[] statements = StatementExtractor.generateStatements(sideEffects, expression);
|
||||
if (statements.length > 0) {
|
||||
PsiStatement lastAdded = BlockUtils.addBefore(statement, statements);
|
||||
@@ -102,9 +105,9 @@ public class DeleteSideEffectsAwareFix extends LocalQuickFixAndIntentionActionOn
|
||||
}
|
||||
PsiElement parent = statement.getParent();
|
||||
if (parent instanceof PsiStatement && !(parent instanceof PsiIfStatement && ((PsiIfStatement)parent).getElseBranch() == statement)) {
|
||||
statement.replace(JavaPsiFacade.getElementFactory(project).createStatementFromText("{}", statement));
|
||||
ct.replaceAndRestoreComments(statement, "{}");
|
||||
} else {
|
||||
statement.delete();
|
||||
ct.deleteAndRestoreComments(statement);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
// "Delete element" "true"
|
||||
class Test {
|
||||
void test(int x) {
|
||||
//comment
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
// "Extract side effect" "true"
|
||||
class Test {
|
||||
void test(int x) {
|
||||
x/*2*/ =/*3*/2;/*1*//*4*//*5*/
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
// "Delete element" "true"
|
||||
class Test {
|
||||
void test(int x) {
|
||||
i<caret>f(x > 0) {}
|
||||
i<caret>f(x > 0) //comment
|
||||
{}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
// "Extract side effect" "true"
|
||||
class Test {
|
||||
void test(int x) {
|
||||
s<caret>witch(/*1*/x/*2*/=/*3*/2/*4*/)/*5*/ {}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user