From 412d0c53faceacb5053f0185870dff888904c8f0 Mon Sep 17 00:00:00 2001 From: Roman Ivanov Date: Mon, 21 Aug 2023 11:28:11 +0200 Subject: [PATCH] [java, completion] do not add references on the top level of module. Add handling of new PSI of type elements on top level GitOrigin-RevId: 0d8a89d044da022412573e01ae6700a38fc70e29 --- .../codeInsight/completion/JavaCompletionContributor.java | 3 +++ .../intellij/codeInsight/completion/JavaKeywordCompletion.java | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) 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 57928f7bbf31..2978747bc591 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java @@ -134,6 +134,8 @@ public final class JavaCompletionContributor extends CompletionContributor imple private static final ElementPattern IN_VARIABLE_TYPE = psiElement() .withParents(PsiJavaCodeReferenceElement.class, PsiTypeElement.class, PsiDeclarationStatement.class) .afterLeaf(psiElement().inside(psiAnnotation())); + private static final ElementPattern TOP_LEVEL_VAR_IN_MODULE = psiElement().withSuperParent(3, PsiJavaFile.class) + .inVirtualFile(virtualFile().withName("module-info.java")); /** * @param position completion invocation position @@ -740,6 +742,7 @@ public final class JavaCompletionContributor extends CompletionContributor imple Set expectedTypes, Condition nameCondition) { PsiElement position = parameters.getPosition(); + if (TOP_LEVEL_VAR_IN_MODULE.accepts(position)) return Collections.emptyList(); ElementFilter filter = getReferenceFilter(position); if (filter == null) return Collections.emptyList(); if (parameters.getInvocationCount() <= 1 && JavaClassNameCompletionContributor.AFTER_NEW.accepts(position)) { diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaKeywordCompletion.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaKeywordCompletion.java index 6895183a65ac..6eecaa518563 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaKeywordCompletion.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaKeywordCompletion.java @@ -1200,7 +1200,7 @@ public class JavaKeywordCompletion { } private void addModuleKeywords() { - PsiElement context = PsiTreeUtil.skipParentsOfType(myPosition.getParent(), PsiErrorElement.class); + PsiElement context = PsiTreeUtil.skipParentsOfType(myPosition.getParent(), PsiErrorElement.class, PsiJavaCodeReferenceElement.class, PsiTypeElement.class); PsiElement prevElement = PsiTreeUtil.skipWhitespacesAndCommentsBackward(myPosition.getParent()); if (context instanceof PsiJavaFile && !(prevElement instanceof PsiJavaModule) || context instanceof PsiImportList) {