prefer final over finalize()

This commit is contained in:
peter
2011-01-25 19:28:58 +01:00
parent 9f4efe0e8f
commit 08eab417c0
4 changed files with 24 additions and 3 deletions
@@ -15,8 +15,10 @@
*/
package com.intellij.psi.util.proximity;
import com.intellij.psi.CommonClassNames;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiMethod;
import com.intellij.psi.util.ProximityLocation;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
@@ -24,7 +26,7 @@ import org.jetbrains.annotations.NotNull;
/**
* @author peter
*/
public class KnownPackageWeigher extends ProximityWeigher {
public class KnownElementWeigher extends ProximityWeigher {
public Comparable weigh(@NotNull final PsiElement element, @NotNull final ProximityLocation location) {
if (element instanceof PsiClass) {
@@ -34,6 +36,15 @@ public class KnownPackageWeigher extends ProximityWeigher {
if (qname.startsWith("javax.")) return 1;
}
}
if (element instanceof PsiMethod) {
final PsiMethod method = (PsiMethod)element;
if ("finalize".equals(method.getName()) || "registerNatives".equals(method.getName())) {
final PsiClass containingClass = method.getContainingClass();
if (containingClass != null && CommonClassNames.JAVA_LANG_OBJECT.equals(containingClass.getQualifiedName())) {
return -1;
}
}
}
return 0;
}
}
@@ -0,0 +1,7 @@
public class Bar {
{
fina<caret>x
}
}
@@ -138,7 +138,6 @@ public class NormalCompletionOrderingTest extends CompletionSortingTestCase {
assertEquals(1, ((PsiMethod)myItems[1].getObject()).getParameterList().getParametersCount());
assertEquals(2, ((PsiMethod)myItems[2].getObject()).getParameterList().getParametersCount());
}
public void testStatsForClassNameInExpression() throws Throwable {
final VirtualFile foo = getSourceRoot().createChildDirectory(this, "foo");
VfsUtil.saveText(foo.createChildData(this, "FooBar.java"), "package foo; public interface FooBar {}");
@@ -149,4 +148,8 @@ public class NormalCompletionOrderingTest extends CompletionSortingTestCase {
assertPreferredItems(0, "FooBee", "FooBar");
}
public void testDispreferFinalize() throws Throwable {
checkPreferredItems(0, "final", "finalize");
}
}
+1 -1
View File
@@ -781,7 +781,7 @@
order="before openedInEditor"/>
<weigher key="proximity" implementationClass="com.intellij.psi.util.proximity.JavaInheritanceWeigher" id="javaInheritance"
order="after explicitlyImported, before sameLogicalRoot"/>
<weigher key="proximity" implementationClass="com.intellij.psi.util.proximity.KnownPackageWeigher" id="knownPackage"
<weigher key="proximity" implementationClass="com.intellij.psi.util.proximity.KnownElementWeigher" id="knownElement"
order="after sameModule, before sdkOrLibrary"/>
<statistician key="proximity" implementationClass="com.intellij.codeInsight.completion.JavaProximityStatistician"/>