mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[java-intention] BreakConverter#process fixed
isRemovable must be called before any modifications. Otherwise, previous modifications may affect its results. GitOrigin-RevId: d05be1e54ba62e5ac18003bf54dab2abb16124ce
This commit is contained in:
committed by
intellij-monorepo-bot
parent
bd24e716a3
commit
9ca4341d7f
+16
@@ -0,0 +1,16 @@
|
||||
// "Replace 'switch' with 'if'" "true"
|
||||
class X {
|
||||
void test(int x) {
|
||||
if (x > 0) {
|
||||
if (x == 1) {
|
||||
if (Math.random() > 0.5) {
|
||||
System.out.println(1);
|
||||
} else {
|
||||
}
|
||||
} else if (x == 2) {
|
||||
System.out.println(2);
|
||||
}
|
||||
}
|
||||
System.out.println("Exit");
|
||||
}
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
// "Replace 'switch' with 'if'" "true"
|
||||
class X {
|
||||
void test(int x) {
|
||||
if (x > 0) {
|
||||
swi<caret>tch (x) {
|
||||
case 1:
|
||||
if (Math.random() > 0.5) {
|
||||
System.out.println(1);
|
||||
break;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
System.out.println(2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
System.out.println("Exit");
|
||||
}
|
||||
}
|
||||
+10
-5
@@ -4,11 +4,13 @@ package com.siyeh.ig.psiutils;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.siyeh.ig.fixes.DeleteUnnecessaryStatementFix;
|
||||
import one.util.streamex.StreamEx;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* A class which converts switch statement breaks before switch statement
|
||||
@@ -25,11 +27,14 @@ public class BreakConverter {
|
||||
|
||||
public void process() {
|
||||
List<PsiBreakStatement> breaks = collectBreaks();
|
||||
for (PsiBreakStatement breakStatement : breaks) {
|
||||
if (isRemovable(mySwitchBlock, breakStatement)) {
|
||||
DeleteUnnecessaryStatementFix.deleteUnnecessaryStatement(breakStatement);
|
||||
} else {
|
||||
assert myReplacement != null;
|
||||
Map<Boolean, List<PsiBreakStatement>> groups =
|
||||
StreamEx.of(breaks).partitioningBy(breakStatement -> isRemovable(mySwitchBlock, breakStatement));
|
||||
List<PsiBreakStatement> removableBreaks = groups.get(true);
|
||||
removableBreaks.forEach(DeleteUnnecessaryStatementFix::deleteUnnecessaryStatement);
|
||||
List<PsiBreakStatement> replaceableBreaks = groups.get(false);
|
||||
if (!replaceableBreaks.isEmpty()) {
|
||||
assert myReplacement != null;
|
||||
for (PsiBreakStatement breakStatement : replaceableBreaks) {
|
||||
new CommentTracker().replaceAndRestoreComments(breakStatement, myReplacement);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user