mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
PreferMostUsedWeigher is moved down
This commit is contained in:
@@ -72,18 +72,21 @@ public class JavaCompletionSorting {
|
||||
sorter = sorter.weighAfter("priority", new PreferDefaultTypeWeigher(expectedTypes, parameters));
|
||||
}
|
||||
|
||||
final PreferMostUsedWeigher preferMostUsedWeigher = PreferMostUsedWeigher.create(position);
|
||||
List<LookupElementWeigher> afterStats = ContainerUtil.newArrayList();
|
||||
afterStats.add(new PreferByKindWeigher(type, position, expectedTypes));
|
||||
final PreferMostUsedWeigher preferMostUsedWeigher = PreferMostUsedWeigher.create(position);
|
||||
if (preferMostUsedWeigher != null) {
|
||||
afterStats.add(preferMostUsedWeigher);
|
||||
}
|
||||
if (!smart) {
|
||||
ContainerUtil.addIfNotNull(afterStats, preferStatics(position, expectedTypes));
|
||||
if (preferMostUsedWeigher == null) {
|
||||
ContainerUtil.addIfNotNull(afterStats, preferStatics(position, expectedTypes));
|
||||
}
|
||||
if (!afterNew) {
|
||||
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))) {
|
||||
|
||||
@@ -60,7 +60,7 @@ class PreferMostUsedWeigher extends LookupElementWeigher {
|
||||
if (OBJECT_METHOD_PATTERN.accepts(psi)) {
|
||||
return null;
|
||||
}
|
||||
if (looksLikeHelperMethod(psi)) {
|
||||
if (looksLikeHelperMethodOrConst(psi)) {
|
||||
return null;
|
||||
}
|
||||
final Integer occurrenceCount = myCompilerReferenceService.getCompileTimeOccurrenceCount(psi, myConstructorSuggestion);
|
||||
@@ -69,7 +69,7 @@ class PreferMostUsedWeigher extends LookupElementWeigher {
|
||||
}
|
||||
|
||||
//Objects.requireNonNull is an example
|
||||
private static boolean looksLikeHelperMethod(@NotNull PsiElement element) {
|
||||
private static boolean looksLikeHelperMethodOrConst(@NotNull PsiElement element) {
|
||||
if (!(element instanceof PsiMethod)) return false;
|
||||
PsiMethod method = (PsiMethod)element;
|
||||
if (method.isConstructor()) return false;
|
||||
@@ -78,11 +78,11 @@ class PreferMostUsedWeigher extends LookupElementWeigher {
|
||||
if (parameters.length == 0) return false;
|
||||
for (PsiParameter parameter : parameters) {
|
||||
PsiType paramType = parameter.getType();
|
||||
if (!isRawDeepTypeEqualToObject(paramType)) {
|
||||
return false;
|
||||
if (isRawDeepTypeEqualToObject(paramType)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
private static boolean isRawDeepTypeEqualToObject(@Nullable PsiType type) {
|
||||
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
class Foo {
|
||||
public String someMethod1() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String someMethod2(String s) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Runnable someMethod3() {
|
||||
return null;
|
||||
}
|
||||
|
||||
void m() {
|
||||
someMethod1();
|
||||
someMethod1();
|
||||
someMethod1();
|
||||
|
||||
someMethod2("");
|
||||
someMethod2("");
|
||||
someMethod2("");
|
||||
someMethod2("");
|
||||
|
||||
someMethod3();
|
||||
someMethod3();
|
||||
someMethod3();
|
||||
someMethod3();
|
||||
someMethod3();
|
||||
}
|
||||
|
||||
void mm(Foo f) {
|
||||
<caret>
|
||||
}
|
||||
|
||||
}
|
||||
+7
@@ -76,6 +76,13 @@ public class CompilerReferenceDataInCompletionTest extends CompilerReferencesTes
|
||||
doTestStaticMemberCompletionOrdering(new String[] {"Foo.java"}, "someMethod2(1)", "someMethod1(0)", "m(0)", "nonNull(1)");
|
||||
}
|
||||
|
||||
public void testExpectedByTypeAreFirst() {
|
||||
doTestCompletion(new String[] {"Foo.java"}, "String s = ", new String[] {"someMethod2(1)", "someMethod1(0)", "someMethod3(0)", "m(0)", "mm(1)"}, m -> {
|
||||
PsiClass aClass = m.getContainingClass();
|
||||
return aClass != null && "Foo".equals(aClass.getName());
|
||||
});
|
||||
}
|
||||
|
||||
private void doTestConstructorCompletionOrdering(@NotNull String[] files,
|
||||
@NotNull String phraseToComplete,
|
||||
String... expectedOrder) {
|
||||
|
||||
Reference in New Issue
Block a user