diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/LimitedAccessibleClassPreprocessor.java b/java/java-impl/src/com/intellij/codeInsight/completion/LimitedAccessibleClassPreprocessor.java index b95c63e4384b..2cbc204de8af 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/LimitedAccessibleClassPreprocessor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/LimitedAccessibleClassPreprocessor.java @@ -15,6 +15,7 @@ */ package com.intellij.codeInsight.completion; +import com.intellij.codeInsight.completion.scope.JavaCompletionProcessor; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.registry.Registry; import com.intellij.psi.PsiClass; @@ -65,7 +66,7 @@ class LimitedAccessibleClassPreprocessor implements Processor { @Override public boolean process(PsiClass psiClass) { if (myParameters.getInvocationCount() < 2) { - if (PsiReferenceExpressionImpl.seemsScrambled(psiClass)) { + if (PsiReferenceExpressionImpl.seemsScrambled(psiClass) || JavaCompletionProcessor.seemsInternal(psiClass)) { return true; } String name = psiClass.getName(); diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/scope/JavaCompletionProcessor.java b/java/java-impl/src/com/intellij/codeInsight/completion/scope/JavaCompletionProcessor.java index 3d070a8a008a..b94ea37864db 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/scope/JavaCompletionProcessor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/scope/JavaCompletionProcessor.java @@ -26,6 +26,7 @@ import com.intellij.psi.util.PsiUtil; import com.intellij.psi.util.PsiUtilCore; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.hash.LinkedHashMap; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -107,6 +108,12 @@ public class JavaCompletionProcessor implements PsiScopeProcessor, ElementClassH Registry.is("ide.java.completion.suggest.static.after.instance"); } + @ApiStatus.Internal + public static boolean seemsInternal(PsiClass clazz) { + String name = clazz.getName(); + return name != null && name.contains("$"); + } + @Override public void handleEvent(@NotNull Event event, Object associated){ if (JavaScopeProcessorEvent.isEnteringStaticScope(event, associated)) { @@ -134,6 +141,10 @@ public class JavaCompletionProcessor implements PsiScopeProcessor, ElementClassH } } + if (element instanceof PsiClass && seemsInternal((PsiClass) element)) { + return true; + } + if (element instanceof PsiMethod) { PsiMethod method = (PsiMethod)element; if (PsiTypesUtil.isGetClass(method) && PsiUtil.isLanguageLevel5OrHigher(myElement)) { diff --git a/java/java-tests/testData/codeInsight/completion/normal/NoClassesWithDollar.java b/java/java-tests/testData/codeInsight/completion/normal/NoClassesWithDollar.java new file mode 100644 index 000000000000..63e2b3a16fd7 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/NoClassesWithDollar.java @@ -0,0 +1,5 @@ +import imported.*; + +class C { + WithD +} 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 88a866797348..ba712ea4eb41 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 @@ -1728,6 +1728,12 @@ class Foo extends myClass ''' } + void testNoClassesWithDollar() { + myFixture.addClass('package some; public class $WithDollarNonImported {}') + myFixture.addClass('package imported; public class $WithDollarImported {}') + doAntiTest() + } + @NeedsIndex.ForStandardLibrary void "test don't show static inner class after instance qualifier"() { myFixture.configureByText "a.java", """