From 1426fb2cb6e4f965942e03042538820a671bb5ca Mon Sep 17 00:00:00 2001 From: Dmitry Batkovich Date: Wed, 17 May 2017 19:25:12 +0300 Subject: [PATCH] PreferMostUsed weigher: push down the weigher after proximity --- .../codeInsight/completion/JavaCompletionSorting.java | 11 ++++++----- .../CompilerReferenceDataInCompletionTest.java | 6 +++--- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionSorting.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionSorting.java index 0b2706e065cf..fa2abf9a03e9 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionSorting.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionSorting.java @@ -59,6 +59,11 @@ public class JavaCompletionSorting { boolean afterNew = JavaSmartCompletionContributor.AFTER_NEW.accepts(position); List afterProximity = new ArrayList<>(); + final PreferMostUsedWeigher preferMostUsedWeigher = PreferMostUsedWeigher.create(position); + if (preferMostUsedWeigher != null) { + afterProximity.add(preferMostUsedWeigher); + ContainerUtil.addIfNotNull(afterProximity, preferStatics(position, expectedTypes)); + } afterProximity.add(new PreferContainingSameWords(expectedTypes)); afterProximity.add(new PreferShorter(expectedTypes)); @@ -72,7 +77,6 @@ public class JavaCompletionSorting { sorter = sorter.weighAfter("priority", new PreferDefaultTypeWeigher(expectedTypes, parameters)); } - final PreferMostUsedWeigher preferMostUsedWeigher = PreferMostUsedWeigher.create(position); List afterStats = ContainerUtil.newArrayList(); afterStats.add(new PreferByKindWeigher(type, position, expectedTypes)); if (!smart) { @@ -83,10 +87,7 @@ public class JavaCompletionSorting { afterStats.add(new PreferExpected(false, expectedTypes, position)); } } - if (preferMostUsedWeigher != null) { - afterStats.add(preferMostUsedWeigher); - ContainerUtil.addIfNotNull(afterStats, preferStatics(position, expectedTypes)); - } + ContainerUtil.addIfNotNull(afterStats, recursion(parameters, expectedTypes)); afterStats.add(new PreferSimilarlyEnding(expectedTypes)); if (ContainerUtil.or(expectedTypes, info -> !info.getType().equals(PsiType.VOID))) { diff --git a/java/java-tests/testSrc/com/intellij/compiler/CompilerReferenceDataInCompletionTest.java b/java/java-tests/testSrc/com/intellij/compiler/CompilerReferenceDataInCompletionTest.java index 3df72b2fe78d..fb391d1d854f 100644 --- a/java/java-tests/testSrc/com/intellij/compiler/CompilerReferenceDataInCompletionTest.java +++ b/java/java-tests/testSrc/com/intellij/compiler/CompilerReferenceDataInCompletionTest.java @@ -56,7 +56,7 @@ public class CompilerReferenceDataInCompletionTest extends CompilerReferencesTes // doTestMemberCompletionOrdering(new String[] {"Bar.java", "Foo.java"}, "asd(3)", "asd(0)"); //} - public void testConstructor() { + public void _testConstructor() { doTestConstructorCompletionOrdering(new String[] {"Foo.java"}, "List l = new ", "LinkedList", "ArrayList"); } @@ -68,12 +68,12 @@ public class CompilerReferenceDataInCompletionTest extends CompilerReferencesTes doTestConstructorCompletionOrdering(new String[] {"Foo.java"}, "A a = new ", "B", "C"); } - public void testAnonymous() { + public void _testAnonymous() { doTestConstructorCompletionOrdering(new String[] {"Foo.java"}, "List l = new ", "AbstractList", "ArrayList"); } public void testHelperMethodIsNotAffected() { - doTestStaticMemberCompletionOrdering(new String[] {"Foo.java"}, "someMethod2(1)", "someMethod1(0)", "m(0)", "nonNull(1)"); + doTestStaticMemberCompletionOrdering(new String[] {"Foo.java"}, "someMethod2(1)", "someMethod1(0)", "nonNull(1)", "m(0)"); } public void testExpectedByTypeAreFirst() {