mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-13 21:55:01 +07:00
side effects in for stmt declaration (IDEA-172700)
transformation should be added before for stmt
This commit is contained in:
+3
-1
@@ -32,6 +32,7 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.*;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.siyeh.ig.psiutils.BlockUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -166,7 +167,8 @@ public class AccessStaticViaInstanceFix extends LocalQuickFixAndIntentionActionO
|
||||
LOG.assertTrue(statement != null);
|
||||
WriteAction.run(() -> {
|
||||
try {
|
||||
statement.getParent().addBefore(statementFromText, statement);
|
||||
PsiElement parent = statement.getParent();
|
||||
BlockUtils.addBefore(parent instanceof PsiForStatement ? (PsiStatement)parent : statement, statementFromText);
|
||||
}
|
||||
catch (IncorrectOperationException e) {
|
||||
LOG.error(e);
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiExpressionTrimRenderer;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.siyeh.ig.psiutils.BlockUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -90,8 +91,9 @@ public class RemoveInitializerFix implements LocalQuickFix {
|
||||
parent.replace(statementFromText);
|
||||
}
|
||||
else {
|
||||
declaration.getParent().addBefore(statementFromText, declaration);
|
||||
elementToDelete.delete();
|
||||
PsiElement grandParent = declaration.getParent();
|
||||
BlockUtils.addBefore(((PsiStatement) (grandParent instanceof PsiForStatement ? grandParent : declaration)), statementFromText);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
// "Remove redundant initializer" "true"
|
||||
class A {
|
||||
void testFor() {
|
||||
if (true) {
|
||||
read();
|
||||
for(int i;; i++) {
|
||||
i = 10;
|
||||
System.out.println("Hello!");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static int read() {
|
||||
System.out.println();
|
||||
return 0;
|
||||
}}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
// "Remove redundant initializer" "true"
|
||||
class A {
|
||||
void testFor() {
|
||||
if (true)
|
||||
for(int i = re<caret>ad();;i++) {
|
||||
i = 10;
|
||||
System.out.println("Hello!");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static int read() {
|
||||
System.out.println();
|
||||
return 0;
|
||||
}}
|
||||
Reference in New Issue
Block a user