expected type should always be at the top of the lookup in smart completion after new

This commit is contained in:
peter
2012-03-27 20:30:59 +02:00
parent 14893c2f39
commit baee22d965
3 changed files with 26 additions and 3 deletions
@@ -55,7 +55,9 @@ public class JavaCompletionSorting {
final boolean afterNew = JavaSmartCompletionContributor.AFTER_NEW.accepts(position);
List<LookupElementWeigher> afterNegativeStats = new ArrayList<LookupElementWeigher>();
ContainerUtil.addIfNotNull(afterNegativeStats, smart ? new PreferDefaultTypeWeigher(expectedTypes, parameters) : preferStatics(position));
if (!smart) {
ContainerUtil.addIfNotNull(afterNegativeStats, preferStatics(position));
}
afterNegativeStats.add(new PreferLocalVariablesLiteralsAndAnnoMethodsWeigher(type, position));
ContainerUtil.addIfNotNull(afterNegativeStats, recursion(parameters, expectedTypes));
if (!smart && !afterNew) {
@@ -74,6 +76,9 @@ public class JavaCompletionSorting {
if (!smart && afterNew) {
sorter = sorter.weighBefore("liftShorter", new PreferExpected(true, expectedTypes));
}
if (smart) {
sorter = sorter.weighBefore("negativeStats", new PreferDefaultTypeWeigher(expectedTypes, parameters));
}
sorter = sorter.weighAfter("negativeStats", afterNegativeStats.toArray(new LookupElementWeigher[afterNegativeStats.size()]));
sorter = sorter.weighAfter("prefix", new PreferNonGeneric(), new PreferAccessible(position), new PreferSimple(), new PreferEnumConstants(parameters));
sorter = sorter.weighAfter("proximity", afterProximity.toArray(new LookupElementWeigher[afterProximity.size()]));