From 97e799fdaa138ac674945a152debd28ec86be8ab Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Mon, 15 Jul 2019 14:48:22 +0700 Subject: [PATCH] IDEA-218232 Create missing branch in switch leads to exception, fix all does nothing GitOrigin-RevId: 136c60845a6b70bca07d5643913f50aaa26e0010 --- .../fixes/CreateMissingSwitchBranchesFix.java | 6 +++++- .../afterExpressionBreakJava13Preview.java | 17 +++++++++++++++++ .../beforeExpressionBreakJava13Preview.java | 13 +++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/controlflow/enumswitch/afterExpressionBreakJava13Preview.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/controlflow/enumswitch/beforeExpressionBreakJava13Preview.java diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/CreateMissingSwitchBranchesFix.java b/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/CreateMissingSwitchBranchesFix.java index 2c54e16c078b..29b84ac2ac38 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/CreateMissingSwitchBranchesFix.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/CreateMissingSwitchBranchesFix.java @@ -6,8 +6,10 @@ import com.intellij.codeInsight.template.TemplateBuilderFactory; import com.intellij.codeInsight.template.impl.ConstantNode; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.util.Couple; +import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.*; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.PsiUtil; import com.intellij.util.ObjectUtils; import com.intellij.util.containers.ContainerUtil; import com.siyeh.ig.psiutils.CommentTracker; @@ -153,7 +155,9 @@ public class CreateMissingSwitchBranchesFix extends BaseSwitchFix { if (isRuleBasedFormat) { return Collections.singletonList("case " + name + " -> " + value + ";"); } else { - return Arrays.asList("case "+name+":", "break " + value + ";"); + return Arrays.asList("case " + name + ":", + (PsiUtil.getLanguageLevel(switchBlock) == LanguageLevel.JDK_13_PREVIEW ? "yield" : "break") + + " " + value + ";"); } } else { if (isRuleBasedFormat) { diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/controlflow/enumswitch/afterExpressionBreakJava13Preview.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/controlflow/enumswitch/afterExpressionBreakJava13Preview.java new file mode 100644 index 000000000000..55a417517f09 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/controlflow/enumswitch/afterExpressionBreakJava13Preview.java @@ -0,0 +1,17 @@ +// "Create missing branches: 'B', and 'C'" "true" +package com.siyeh.ipp.enumswitch; + +class BeforeDefault { + enum X {A, B, C} + + String test(X x) { + return switch (x) { + case A: yield "foo"; + case B: + yield null; + case C: + yield null; + default: yield "bar"; + }; + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/controlflow/enumswitch/beforeExpressionBreakJava13Preview.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/controlflow/enumswitch/beforeExpressionBreakJava13Preview.java new file mode 100644 index 000000000000..62c3c5bfa0e9 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/controlflow/enumswitch/beforeExpressionBreakJava13Preview.java @@ -0,0 +1,13 @@ +// "Create missing branches: 'B', and 'C'" "true" +package com.siyeh.ipp.enumswitch; + +class BeforeDefault { + enum X {A, B, C} + + String test(X x) { + return switch (x) { + case A: yield "foo"; + default: yield "bar"; + }; + } +} \ No newline at end of file