From 639652bd8dfbf43de9003456a935f94417e6dbdb Mon Sep 17 00:00:00 2001 From: "Andrey.Cherkasov" Date: Tue, 28 Jun 2022 07:36:19 +0400 Subject: [PATCH] [java-completion] Put a colon for multiple case labels IDEA-296940 GitOrigin-RevId: cd5d256b6082d3dd6aa246a40cce6294f93f8fdd --- .../editorActions/smartEnter/SwitchLabelColonFixer.java | 4 +++- .../completeStatement/MultipleCasesColon.java | 8 ++++++++ .../completeStatement/MultipleCasesColon_after.java | 9 +++++++++ .../intellij/java/codeInsight/CompleteStatementTest.java | 1 + 4 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/completeStatement/MultipleCasesColon.java create mode 100644 java/java-tests/testData/codeInsight/completeStatement/MultipleCasesColon_after.java diff --git a/java/java-impl/src/com/intellij/codeInsight/editorActions/smartEnter/SwitchLabelColonFixer.java b/java/java-impl/src/com/intellij/codeInsight/editorActions/smartEnter/SwitchLabelColonFixer.java index 939a7c051222..9eb535f2bf03 100644 --- a/java/java-impl/src/com/intellij/codeInsight/editorActions/smartEnter/SwitchLabelColonFixer.java +++ b/java/java-impl/src/com/intellij/codeInsight/editorActions/smartEnter/SwitchLabelColonFixer.java @@ -16,6 +16,7 @@ package com.intellij.codeInsight.editorActions.smartEnter; import com.intellij.openapi.editor.Editor; +import com.intellij.psi.PsiCaseLabelElementList; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiSwitchLabelStatement; import com.intellij.util.IncorrectOperationException; @@ -28,7 +29,8 @@ public class SwitchLabelColonFixer implements Fixer { public void apply(Editor editor, JavaSmartEnterProcessor processor, PsiElement psiElement) throws IncorrectOperationException { if (psiElement instanceof PsiSwitchLabelStatement && !psiElement.getText().endsWith(":")) { PsiSwitchLabelStatement statement = (PsiSwitchLabelStatement)psiElement; - if (statement.getCaseValue() != null || statement.isDefaultCase()) { + PsiCaseLabelElementList labelElementList = statement.getCaseLabelElementList(); + if ((labelElementList != null && labelElementList.getElementCount() != 0) || statement.isDefaultCase()) { editor.getDocument().insertString(psiElement.getTextRange().getEndOffset(), ":"); } } diff --git a/java/java-tests/testData/codeInsight/completeStatement/MultipleCasesColon.java b/java/java-tests/testData/codeInsight/completeStatement/MultipleCasesColon.java new file mode 100644 index 000000000000..1e2650df7715 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completeStatement/MultipleCasesColon.java @@ -0,0 +1,8 @@ + +class Foo { + void foo(String a) { + switch (a) { + case "dzyolya", "izyayu" + } + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/completeStatement/MultipleCasesColon_after.java b/java/java-tests/testData/codeInsight/completeStatement/MultipleCasesColon_after.java new file mode 100644 index 000000000000..2214b6f5cc6b --- /dev/null +++ b/java/java-tests/testData/codeInsight/completeStatement/MultipleCasesColon_after.java @@ -0,0 +1,9 @@ + +class Foo { + void foo(String a) { + switch (a) { + case "dzyolya", "izyayu": + + } + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/CompleteStatementTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/CompleteStatementTest.java index 76c79ecfd996..26367ccd99c0 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/CompleteStatementTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/CompleteStatementTest.java @@ -139,6 +139,7 @@ public class CompleteStatementTest extends EditorActionTestCase { public void testSwitchKeywordWithCondition() { doTest(); } public void testSwitchBraces() { doTest(); } public void testCaseColon() { doTest(); } + public void testMultipleCasesColon() { doTest(); } public void testDefaultColon() { doTest(); } public void testNewInParentheses() { doTest(); } public void testIDEADEV20713() { doTest(); }