CollapseIntoLoopAction: support no-selection mode; disable if code can break the outer loop

GitOrigin-RevId: 87c99d17438c8db668e936f379f2edabde692c80
This commit is contained in:
Tagir Valeev
2020-06-11 13:21:42 +07:00
committed by intellij-monorepo-bot
parent ba72470db2
commit 30b4657109
15 changed files with 333 additions and 74 deletions

View File

@@ -0,0 +1,13 @@
// "Collapse into loop" "true"
class X {
void test() {
LOOP:
for (int i = 0; i < 10; i++) {
for (int j = 2; j < 6; j++) {
if (i % j == 0) break LOOP;
}
}
}
void foo(Object obj) {}
}

View File

@@ -0,0 +1,13 @@
import java.util.Arrays;
// "Collapse into loop" "true"
class X {
void test() {
for (String s : Arrays.asList("foo", "bar")) {
foo(s);
}
foo(123);
}
void foo(Object obj) {}
}

View File

@@ -0,0 +1,10 @@
// "Collapse into loop" "true"
class X {
void test(int[] data) {
for (int i = 0; i < 6; i++) {
System.out.print("data["+ i +"]");
System.out.println("=");
System.out.println(data[i]);
}
}
}

View File

@@ -0,0 +1,11 @@
// "Collapse into loop" "true"
class X {
void test(int[] data) {
for (int i = 0; i < 6; i++) {
System.out.print("data["+ i +"]");
System.out.println("=");
System.out.println(data[i]);
}
System.out.print("data["+6+"]");
}
}

View File

@@ -0,0 +1,13 @@
// "Collapse into loop" "false"
class X {
void test() {
for (int i = 0; i < 10; i++) {
<selection>if (i % 2 == 0) break;
if (i % 3 == 0) break;
if (i % 4 == 0) break;
if (i % 5 == 0) break;</selection>
}
}
void foo(Object obj) {}
}

View File

@@ -0,0 +1,14 @@
// "Collapse into loop" "true"
class X {
void test() {
LOOP:
for (int i = 0; i < 10; i++) {
<selection>if (i % 2 == 0) break LOOP;
if (i % 3 == 0) break LOOP;
if (i % 4 == 0) break LOOP;
if (i % 5 == 0) break LOOP;</selection>
}
}
void foo(Object obj) {}
}

View File

@@ -0,0 +1,13 @@
// "Collapse into loop" "false"
class X {
void test() {
for (int i = 0; i < 10; i++) {
<selection>if (i % 2 == 0) continue;
if (i % 3 == 0) continue;
if (i % 4 == 0) continue;
if (i % 5 == 0) continue;</selection>
}
}
void foo(Object obj) {}
}

View File

@@ -0,0 +1,10 @@
// "Collapse into loop" "false"
class X {
void test() {
<selection>foo("foo");
foo("bar");
foo(123);</selection>
}
void foo(Object obj) {}
}

View File

@@ -0,0 +1,10 @@
// "Collapse into loop" "true"
class X {
void test() {
<caret>foo("foo");
foo("bar");
foo(123);
}
void foo(Object obj) {}
}

View File

@@ -0,0 +1,23 @@
// "Collapse into loop" "true"
class X {
void test(int[] data) {
<caret>System.out.print("data["+0+"]");
System.out.println("=");
System.out.println(data[0]);
System.out.print("data["+1+"]");
System.out.println("=");
System.out.println(data[1]);
System.out.print("data["+2+"]");
System.out.println("=");
System.out.println(data[2]);
System.out.print("data["+3+"]");
System.out.println("=");
System.out.println(data[3]);
System.out.print("data["+4+"]");
System.out.println("=");
System.out.println(data[4]);
System.out.print("data["+5+"]");
System.out.println("=");
System.out.println(data[5]);
}
}

View File

@@ -0,0 +1,23 @@
// "Collapse into loop" "false"
class X {
void test(int[] data) {
System.out.print("data["+0+"]");
<caret>System.out.println("=");
System.out.println(data[0]);
System.out.print("data["+1+"]");
System.out.println("=");
System.out.println(data[1]);
System.out.print("data["+2+"]");
System.out.println("=");
System.out.println(data[2]);
System.out.print("data["+3+"]");
System.out.println("=");
System.out.println(data[3]);
System.out.print("data["+4+"]");
System.out.println("=");
System.out.println(data[4]);
System.out.print("data["+5+"]");
System.out.println("=");
System.out.println(data[5]);
}
}

View File

@@ -0,0 +1,24 @@
// "Collapse into loop" "true"
class X {
void test(int[] data) {
<caret>System.out.print("data["+0+"]");
System.out.println("=");
System.out.println(data[0]);
System.out.print("data["+1+"]");
System.out.println("=");
System.out.println(data[1]);
System.out.print("data["+2+"]");
System.out.println("=");
System.out.println(data[2]);
System.out.print("data["+3+"]");
System.out.println("=");
System.out.println(data[3]);
System.out.print("data["+4+"]");
System.out.println("=");
System.out.println(data[4]);
System.out.print("data["+5+"]");
System.out.println("=");
System.out.println(data[5]);
System.out.print("data["+6+"]");
}
}