CollapseIntoLoopAction: use tracking equivalence checker

GitOrigin-RevId: e8194d0ed5c4603eacbb0d904232f79f6373e56a
This commit is contained in:
Tagir Valeev
2020-06-17 06:31:00 +03:00
committed by intellij-monorepo-bot
parent fb8cffea13
commit 7470db33d8
3 changed files with 24 additions and 5 deletions
@@ -17,10 +17,7 @@ import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtil;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.containers.ContainerUtil;
import com.siyeh.ig.psiutils.ControlFlowUtils;
import com.siyeh.ig.psiutils.EquivalenceChecker;
import com.siyeh.ig.psiutils.VariableAccessUtils;
import com.siyeh.ig.psiutils.VariableNameGenerator;
import com.siyeh.ig.psiutils.*;
import one.util.streamex.MoreCollectors;
import one.util.streamex.StreamEx;
import org.jetbrains.annotations.NotNull;
@@ -220,7 +217,7 @@ public class CollapseIntoLoopAction implements IntentionAction {
for (int index = 0; index < count; index++) {
PsiStatement first = statements.get(index);
PsiStatement cur = statements.get(index + offset);
EquivalenceChecker.Match match = equivalence.statementsMatch(first, cur);
EquivalenceChecker.Match match = new TrackingEquivalenceChecker().statementsMatch(first, cur);
if (match.isExactMismatch()) return false;
if (match.isExactMatch()) continue;
PsiElement leftDiff = match.getLeftDiff();
@@ -0,0 +1,9 @@
// "Collapse into loop" "true"
class X {
public int hashCode() {
for (int j = 0; j < 4; j++) {
System.out.println(1);
for (int i = 0; i < 10; i++) {}
}
}
}
@@ -0,0 +1,13 @@
// "Collapse into loop" "true"
class X {
public int hashCode() {
<caret>System.out.println(1);
for (int i = 0; i < 10; i++) {}
System.out.println(1);
for (int i = 0; i < 10; i++) {}
System.out.println(1);
for (int i = 0; i < 10; i++) {}
System.out.println(1);
for (int i = 0; i < 10; i++) {}
}
}