From 5663e0bde810cac18b85caffdde0daeb5bee73e4 Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Mon, 8 Oct 2018 10:57:50 +0700 Subject: [PATCH] IDEA-200030 Quick-fix to remove unreachable should remove body only if previous branch has 'break' at the end --- .../dataFlow/DataFlowInspectionBase.java | 2 +- .../afterDeleteWhenOtherIsAlwaysTrue.java | 15 +++++++++++++++ .../beforeDeleteWhenOtherIsAlwaysTrue.java | 15 +++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/deleteSwitchLabel/afterDeleteWhenOtherIsAlwaysTrue.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/deleteSwitchLabel/beforeDeleteWhenOtherIsAlwaysTrue.java diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DataFlowInspectionBase.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DataFlowInspectionBase.java index 9d988642ec6b..388f0df91219 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DataFlowInspectionBase.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DataFlowInspectionBase.java @@ -700,7 +700,7 @@ public class DataFlowInspectionBase extends AbstractBaseJavaLocalInspectionTool if (!current.isDefaultCase()) { holder.registerProblem(current, InspectionsBundle.message("dataflow.message.unreachable.switch.label"), - new DeleteSwitchLabelFix((PsiSwitchLabelStatement)psiAnchor)); + new DeleteSwitchLabelFix(current)); } } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/deleteSwitchLabel/afterDeleteWhenOtherIsAlwaysTrue.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/deleteSwitchLabel/afterDeleteWhenOtherIsAlwaysTrue.java new file mode 100644 index 000000000000..7824629c6210 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/deleteSwitchLabel/afterDeleteWhenOtherIsAlwaysTrue.java @@ -0,0 +1,15 @@ +// "Remove switch label '"two"'" "true" +class Main { + static void fff() { + switch ("one") { + case "one": + System.out.println("one"); + // quick-fix removes body as well + System.out.println("two"); + } + } + + public static void main(String[] args) { + fff(); + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/deleteSwitchLabel/beforeDeleteWhenOtherIsAlwaysTrue.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/deleteSwitchLabel/beforeDeleteWhenOtherIsAlwaysTrue.java new file mode 100644 index 000000000000..839cff584ba5 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/deleteSwitchLabel/beforeDeleteWhenOtherIsAlwaysTrue.java @@ -0,0 +1,15 @@ +// "Remove switch label '"two"'" "true" +class Main { + static void fff() { + switch ("one") { + case "one": + System.out.println("one"); + case "two": // quick-fix removes body as well + System.out.println("two"); + } + } + + public static void main(String[] args) { + fff(); + } +}