diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionStatistician.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionStatistician.java index c5c1e3994a46..8fdcae303022 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionStatistician.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionStatistician.java @@ -19,6 +19,7 @@ import com.intellij.codeInsight.ExpectedTypeInfo; import com.intellij.codeInsight.ExpectedTypeInfoImpl; import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.codeInsight.lookup.LookupItem; +import com.intellij.patterns.ElementPattern; import com.intellij.psi.*; import com.intellij.psi.statistics.JavaStatisticsManager; import com.intellij.psi.statistics.StatisticsInfo; @@ -27,10 +28,13 @@ import com.intellij.util.containers.ContainerUtil; import java.util.List; +import static com.intellij.patterns.PsiJavaPatterns.psiElement; + /** * @author peter */ public class JavaCompletionStatistician extends CompletionStatistician{ + private static final ElementPattern SUPER_CALL = psiElement().afterLeaf(psiElement().withText(".").afterLeaf(PsiKeyword.SUPER)); @Override public StatisticsInfo serialize(final LookupElement element, final CompletionLocation location) { @@ -40,6 +44,10 @@ public class JavaCompletionStatistician extends CompletionStatistician{ return StatisticsInfo.EMPTY; } + if (SUPER_CALL.accepts(location.getCompletionParameters().getPosition())) { + return StatisticsInfo.EMPTY; + } + LookupItem item = element.as(LookupItem.CLASS_CONDITION_KEY); if (item == null) return null; diff --git a/java/java-tests/testData/codeInsight/completion/normalSorting/NoStatsInSuperInvocation.java b/java/java-tests/testData/codeInsight/completion/normalSorting/NoStatsInSuperInvocation.java new file mode 100644 index 000000000000..a558e824c74c --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normalSorting/NoStatsInSuperInvocation.java @@ -0,0 +1,10 @@ +import java.lang.Object; +import java.lang.Override; +import java.util.HashMap; + +class Foo extends HashMap { + @Override + public Object get(Object key) { + pu + } +} diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionOrderingTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionOrderingTest.groovy index e0bc158b921b..b472f87f9c8d 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionOrderingTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionOrderingTest.groovy @@ -658,4 +658,16 @@ interface TxANotAnno {} assertPreferredItems 0, 'newLinkedSet1', 'newLinkedSet0', 'newLinkedSet2' } + public void testNoStatsInSuperInvocation() { + checkPreferredItems 0, 'put', 'putAll' + + myFixture.type('\n') + assert myFixture.editor.document.text.contains("put") + + myFixture.type(');\nsuper.') + myFixture.completeBasic() + + assertPreferredItems 0, 'get' + } + }