Skip to content

Commit dccd6ec

Browse files
committed
Add explicit tests for fall through handling
1 parent 1464af4 commit dccd6ec

File tree

1 file changed

+57
-2
lines changed

1 file changed

+57
-2
lines changed

src/test/java/org/openrewrite/java/migrate/lang/SwitchCaseAssignmentsToSwitchExpressionTest.java

Lines changed: 57 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -714,12 +714,23 @@ class A {
714714
void doFormat(String str) {
715715
String formatted = "initialValue";
716716
switch (str) {
717-
case "foo": formatted = "Foo";
718-
case "bar": formatted = "Bar";
717+
case "foo": formatted = "Foo"; break;
718+
case "bar": formatted = "Bar"; break;
719719
case null, default: formatted = "unknown";
720720
}
721721
}
722722
}
723+
""",
724+
"""
725+
class A {
726+
void doFormat(String str) {
727+
String formatted = switch (str) {
728+
case "foo": yield "Foo";
729+
case "bar": yield "Bar";
730+
case null, default: yield "unknown";
731+
};
732+
}
733+
}
723734
"""
724735
)
725736
);
@@ -863,4 +874,48 @@ String doFormat() {
863874
)
864875
);
865876
}
877+
878+
@Test
879+
void notConvertWhenFallThrough() {
880+
rewriteRun(
881+
//language=java
882+
java(
883+
"""
884+
class Test {
885+
void doFormat(String str) {
886+
String formatted = "initialValue";
887+
switch (str) {
888+
case "A": formatted = "A"; // no break
889+
case "B": formatted = "B"; // no break
890+
case "C": formatted = "C"; // no break
891+
default: formatted = "Z";
892+
}
893+
}
894+
}
895+
"""
896+
)
897+
);
898+
}
899+
900+
@Test
901+
void notConvertWhenFallThroughAppends() {
902+
rewriteRun(
903+
//language=java
904+
java(
905+
"""
906+
class Test {
907+
void doFormat(String str) {
908+
String formatted = "initialValue";
909+
switch (str) {
910+
case "A": formatted = "A";
911+
case "B": formatted = formatted + "B";
912+
case "C": formatted = formatted + "C";
913+
default: formatted = "Z"; break;
914+
}
915+
}
916+
}
917+
"""
918+
)
919+
);
920+
}
866921
}

0 commit comments

Comments
 (0)