From 91599750b827787b48cd9bcea710917cc7d39776 Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 20 Feb 2019 14:54:20 +0100 Subject: [PATCH] fix Java keyword completion inside casts in enum constant initializers --- .../codeInsight/completion/JavaCompletionContributor.java | 3 ++- .../completion/keywords/primitiveInEnumConstructorCast.java | 3 +++ .../java/codeInsight/completion/KeywordCompletionTest.java | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/completion/keywords/primitiveInEnumConstructorCast.java 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 90355bf0656d..5a446b2a74b4 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java @@ -105,7 +105,8 @@ public class JavaCompletionContributor extends CompletionContributor { psiElement(PsiCodeBlock.class).afterLeaf(PsiKeyword.TRY))); private static final ElementPattern INSIDE_CONSTRUCTOR = psiElement().inside(psiMethod().constructor(true)); private static final ElementPattern AFTER_ENUM_CONSTANT = - psiElement().inside(PsiTypeElement.class).afterLeaf(psiElement().inside(true, psiElement(PsiEnumConstant.class), psiClass())); + psiElement().inside(PsiTypeElement.class).afterLeaf( + psiElement().inside(true, psiElement(PsiEnumConstant.class), psiElement(PsiClass.class, PsiExpressionList.class))); @Nullable public static ElementFilter getReferenceFilter(PsiElement position) { diff --git a/java/java-tests/testData/codeInsight/completion/keywords/primitiveInEnumConstructorCast.java b/java/java-tests/testData/codeInsight/completion/keywords/primitiveInEnumConstructorCast.java new file mode 100644 index 000000000000..3f1532c9541a --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/keywords/primitiveInEnumConstructorCast.java @@ -0,0 +1,3 @@ +enum E { + A(()2) +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/KeywordCompletionTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/KeywordCompletionTest.java index d2fafaa430d4..4288e7806491 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/KeywordCompletionTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/KeywordCompletionTest.java @@ -161,6 +161,7 @@ public class KeywordCompletionTest extends LightCompletionTestCase { public void testIntInGenerics2() { doTest(2, "int", "char", "final"); } public void testBreakInLabeledBlock() { doTest(1, "break label", "continue"); } public void testPrimitiveInForLoop() { doTest(1, "int"); } + public void testPrimitiveInEnumConstructorCast() { doTest(1, "int"); } public void testNoStatementInForLoopCondition() { doTest(0, "synchronized", "if"); } public void testNoStatementInForLoopUpdate() { doTest(0, "synchronized", "if"); } public void testPrivateInJava9Interface() { setLanguageLevel(LanguageLevel.JDK_1_9); doTest(); }