From 7aa782641c6f726a139996ccf5438b9e865eac81 Mon Sep 17 00:00:00 2001 From: Mike Solomon Date: Sat, 18 May 2024 22:29:05 -0400 Subject: [PATCH 1/2] fix(DefaultComesLast)[#289]: duplicate case fix --- .../DefaultComesLastVisitor.java | 2 +- .../staticanalysis/DefaultComesLastTest.java | 37 ++++++++++++++++++- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/openrewrite/staticanalysis/DefaultComesLastVisitor.java b/src/main/java/org/openrewrite/staticanalysis/DefaultComesLastVisitor.java index 65d300b8a..b93adbee1 100644 --- a/src/main/java/org/openrewrite/staticanalysis/DefaultComesLastVisitor.java +++ b/src/main/java/org/openrewrite/staticanalysis/DefaultComesLastVisitor.java @@ -75,7 +75,7 @@ public J.Switch visitSwitch(J.Switch switch_, P p) { aCase.getStatements().isEmpty() && !foundNonEmptyCase) { casesGroupedWithDefault.add(aCase); } else { - if (defaultCase != null && defaultCase.getStatements().isEmpty() && !foundNonEmptyCase) { + if (defaultCase != null && defaultCase.getStatements().isEmpty() && foundNonEmptyCase) { // the last case grouped with default can be non-empty. it will be flipped with // the default case, including its statements casesGroupedWithDefault.add(aCase); diff --git a/src/test/java/org/openrewrite/staticanalysis/DefaultComesLastTest.java b/src/test/java/org/openrewrite/staticanalysis/DefaultComesLastTest.java index ebd41c14c..40f8274bd 100644 --- a/src/test/java/org/openrewrite/staticanalysis/DefaultComesLastTest.java +++ b/src/test/java/org/openrewrite/staticanalysis/DefaultComesLastTest.java @@ -50,7 +50,7 @@ class Test { case 1: break; case 2: - break; + break; default: System.out.println("default"); break; @@ -264,4 +264,39 @@ boolean foo() { ) ); } + + @Test + void defaultComesLastCreateDuplicate() { + rewriteRun( + //language=java + java( + """ + class Test { + int n; + boolean foo() { + switch (n) { + default: + case DERIVATION_MODE: + System.out.println("default"); + break; + } + } + } + """, + """ + class Test { + int n; + boolean foo() { + switch (n) { + case DERIVATION_MODE: + System.out.println("default"); + break; + default: + } + } + } + """ + ) + ); + } } From 46444bbfbf2131a81923fa423fcdfc8439a76f46 Mon Sep 17 00:00:00 2001 From: Tim te Beek Date: Sun, 19 May 2024 21:44:45 +0200 Subject: [PATCH 2/2] Update src/test/java/org/openrewrite/staticanalysis/DefaultComesLastTest.java --- .../org/openrewrite/staticanalysis/DefaultComesLastTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/openrewrite/staticanalysis/DefaultComesLastTest.java b/src/test/java/org/openrewrite/staticanalysis/DefaultComesLastTest.java index 40f8274bd..5984ee7ab 100644 --- a/src/test/java/org/openrewrite/staticanalysis/DefaultComesLastTest.java +++ b/src/test/java/org/openrewrite/staticanalysis/DefaultComesLastTest.java @@ -289,9 +289,9 @@ class Test { boolean foo() { switch (n) { case DERIVATION_MODE: + default: System.out.println("default"); break; - default: } } }