IDEA-218232 Create missing branch in switch leads to exception, fix all does nothing

GitOrigin-RevId: 136c60845a6b70bca07d5643913f50aaa26e0010
This commit is contained in:
Tagir Valeev
2019-07-15 11:05:15 +03:00
committed by intellij-monorepo-bot
parent 6ebd80cf9f
commit 97e799fdaa
3 changed files with 35 additions and 1 deletions
@@ -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) {
@@ -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";
};
}
}
@@ -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 <caret>switch (x) {
case A: yield "foo";
default: yield "bar";
};
}
}