IDEA-174813 Intention to replace multiple enum comparisons with EnumSet.contains()

ExtractSetFromComparisonChainAction enhanced to support enums and support == comparisons
This commit is contained in:
Tagir Valeev
2017-08-29 17:40:32 +07:00
parent eaad1a902d
commit d3e36561f4
5 changed files with 148 additions and 55 deletions
@@ -0,0 +1,19 @@
// "Extract Set from comparison chain" "true"
import java.util.Collections;
import java.util.EnumSet;
import java.util.Set;
public class Test {
private static final Set<Status> STATUSES = Collections.unmodifiableSet(EnumSet.of(Status.DONE, Status.STARTED));
enum Status {
RUNNING, PENDING, DONE, STARTED;
}
void testEq(Status status1, Status status) {
if(status1 == Status.RUNNING || status1 == Status.PENDING || STATUSES.contains(status)) {
System.out.println("foobarbaz");
}
}
}
@@ -0,0 +1,20 @@
// "Extract Set from comparison chain" "true"
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
public class Test {
private static final Set<String> NAMES = Collections.unmodifiableSet(new HashSet<>(Arrays.asList("foo", "bar", "baz")));
enum Status {
RUNNING, PENDING, DONE, STARTED;
}
void testEq(String name, Status status) {
if(NAMES.contains(name) || status == Status.DONE || status == Status.PENDING) {
System.out.println("foobarbaz");
}
}
}
@@ -0,0 +1,13 @@
// "Extract Set from comparison chain" "true"
public class Test {
enum Status {
RUNNING, PENDING, DONE, STARTED;
}
void testEq(Status status1, Status status) {
if(status1 == Status.RUNNING || status1 == Status.PENDING || status =<caret>= Status.DONE || Status.STARTED == status) {
System.out.println("foobarbaz");
}
}
}
@@ -0,0 +1,13 @@
// "Extract Set from comparison chain" "true"
public class Test {
enum Status {
RUNNING, PENDING, DONE, STARTED;
}
void testEq(String name, Status status) {
if(name =<caret>= "foo" || name == "bar" || "baz" == name || status == Status.DONE || status == Status.PENDING) {
System.out.println("foobarbaz");
}
}
}