diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java index 851ae7f758f3..c2397d7ddffa 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java @@ -481,13 +481,9 @@ public class JavaCompletionContributor extends CompletionContributor { MultiMap items = MultiMap.create(); final PsiElement position = parameters.getPosition(); final boolean first = parameters.getInvocationCount() <= 1; - final TailType switchLabelTail; - if (IN_ENUM_SWITCH_LABEL.accepts(position)) { - PsiSwitchBlock block = Objects.requireNonNull(PsiTreeUtil.getParentOfType(position, PsiSwitchBlock.class)); - switchLabelTail = TailTypes.forSwitchLabel(block); - } else { - switchLabelTail = null; - } + final TailType switchLabelTail = IN_SWITCH_LABEL.accepts(position) + ? TailTypes.forSwitchLabel(Objects.requireNonNull(PsiTreeUtil.getParentOfType(position, PsiSwitchBlock.class))) + : null; final boolean isAfterNew = JavaClassNameCompletionContributor.AFTER_NEW.accepts(position); final boolean pkgContext = JavaCompletionUtil.inSomePackage(position); final PsiType[] expectedTypes = ExpectedTypesGetter.getExpectedTypes(parameters.getPosition(), true); diff --git a/java/java-tests/testData/codeInsight/completion/normal/CaseColonAfterStringConstant.java b/java/java-tests/testData/codeInsight/completion/normal/CaseColonAfterStringConstant.java new file mode 100644 index 000000000000..9cb16263b331 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/CaseColonAfterStringConstant.java @@ -0,0 +1,8 @@ +class Main { + public static final String STRING_CONSTANT = "abc"; + public static void main(String[] args) { + switch (args[0]) { + case STRC + } + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/completion/normal/CaseColonAfterStringConstant_after.java b/java/java-tests/testData/codeInsight/completion/normal/CaseColonAfterStringConstant_after.java new file mode 100644 index 000000000000..a52659ee63e7 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/CaseColonAfterStringConstant_after.java @@ -0,0 +1,8 @@ +class Main { + public static final String STRING_CONSTANT = "abc"; + public static void main(String[] args) { + switch (args[0]) { + case STRING_CONSTANT: + } + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/completion/normal/UnboxedConstantsInCase_after.java b/java/java-tests/testData/codeInsight/completion/normal/UnboxedConstantsInCase_after.java index 851926336c8e..31623a47b29a 100644 --- a/java/java-tests/testData/codeInsight/completion/normal/UnboxedConstantsInCase_after.java +++ b/java/java-tests/testData/codeInsight/completion/normal/UnboxedConstantsInCase_after.java @@ -1,7 +1,7 @@ public class Demo { void foo(Integer i){ switch(i) { - case Types.CHAR + case Types.CHAR: } } } diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionTest.groovy b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionTest.groovy index 46b55cb407c5..14e7547c9fc3 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionTest.groovy @@ -1998,4 +1998,6 @@ class Abc { myFixture.type('\n') checkResult() } + + void testCaseColonAfterStringConstant() { doTest() } }