don't suggest methods to override/implement, it seems to be quite useless (IDEA-74784)

This commit is contained in:
peter
2011-09-26 13:50:55 +02:00
parent a2cfa28622
commit 1bdf394db8
3 changed files with 11 additions and 40 deletions
@@ -15,11 +15,9 @@
*/
package com.intellij.codeInsight.completion;
import com.intellij.codeInsight.generation.OverrideImplementUtil;
import com.intellij.codeInsight.lookup.*;
import com.intellij.featureStatistics.FeatureUsageTracker;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.patterns.ElementPattern;
import com.intellij.patterns.PsiJavaPatterns;
@@ -28,7 +26,6 @@ import com.intellij.psi.codeStyle.CodeStyleManager;
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
import com.intellij.psi.codeStyle.SuggestedNameInfo;
import com.intellij.psi.codeStyle.VariableKind;
import com.intellij.psi.infos.CandidateInfo;
import com.intellij.psi.statistics.JavaStatisticsManager;
import com.intellij.psi.util.PropertyUtil;
import com.intellij.psi.util.PsiTreeUtil;
@@ -39,7 +36,10 @@ import com.intellij.util.containers.ContainerUtil;
import gnu.trove.THashSet;
import org.jetbrains.annotations.NotNull;
import java.util.*;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import static com.intellij.patterns.PlatformPatterns.psiElement;
import static com.intellij.patterns.PsiJavaPatterns.psiClass;
@@ -257,9 +257,7 @@ public class JavaMemberNameCompletionContributor extends CompletionContributor {
tunePreferencePolicy(LookupItemUtil.addLookupItems(set, JavaStatisticsManager
.getNameSuggestions(var.getType(), JavaStatisticsManager.getContext(var), matcher.getPrefix()), matcher), suggestedNameInfo);
tunePreferencePolicy(
LookupItemUtil.addLookupItems(set, getUnresolvedReferences(var.getParent(), false),
matcher), suggestedNameInfo);
tunePreferencePolicy(LookupItemUtil.addLookupItems(set, getUnresolvedReferences(var.getParent(), false), matcher), suggestedNameInfo);
}
public static void completeVariableNameForRefactoring(Project project,
@@ -329,42 +327,12 @@ public class JavaMemberNameCompletionContributor extends CompletionContributor {
if (ourClassParent == null) return;
LookupItemUtil.addLookupItems(set, getUnresolvedReferences(ourClassParent, true), matcher);
if(!((PsiModifierListOwner)element).hasModifierProperty(PsiModifier.PRIVATE)){
LookupItemUtil.addLookupItems(set, getOverrides(ourClassParent, PsiUtil.getTypeByPsiElement(element)),
matcher);
LookupItemUtil.addLookupItems(set, getImplements(ourClassParent, PsiUtil.getTypeByPsiElement(element)),
matcher);
}
LookupItemUtil.addLookupItems(set, getPropertiesHandlersNames(
ourClassParent,
((PsiModifierListOwner)element).hasModifierProperty(PsiModifier.STATIC),
PsiUtil.getTypeByPsiElement(element), element), matcher);
}
private static String[] getOverrides(final PsiClass parent, final PsiType typeByPsiElement) {
final List<String> overrides = new ArrayList<String>();
final Collection<CandidateInfo> methodsToOverrideImplement = OverrideImplementUtil.getMethodsToOverrideImplement(parent, true);
for (final CandidateInfo candidateInfo : methodsToOverrideImplement) {
final PsiElement element = candidateInfo.getElement();
if (Comparing.equal(typeByPsiElement, PsiUtil.getTypeByPsiElement(element)) && element instanceof PsiNamedElement) {
overrides.add(((PsiNamedElement)element).getName());
}
}
return ArrayUtil.toStringArray(overrides);
}
private static String[] getImplements(final PsiClass parent, final PsiType typeByPsiElement) {
final List<String> overrides = new ArrayList<String>();
final Collection<CandidateInfo> methodsToOverrideImplement = OverrideImplementUtil.getMethodsToOverrideImplement(parent, false);
for (final CandidateInfo candidateInfo : methodsToOverrideImplement) {
final PsiElement element = candidateInfo.getElement();
if (Comparing.equal(typeByPsiElement,PsiUtil.getTypeByPsiElement(element)) && element instanceof PsiNamedElement) {
overrides.add(((PsiNamedElement)element).getName());
}
}
return ArrayUtil.toStringArray(overrides);
}
private static String[] getPropertiesHandlersNames(final PsiClass psiClass,
final boolean staticContext,
final PsiType varType,
@@ -1,9 +1,12 @@
class Foo extends Super {
public void f<caret>oo() {
int aaa;
int bbb;
public int g<caret>oo() {
}
}
class Super {
public void foo() {
public int goo() {
}
}
@@ -66,7 +66,7 @@ public class HeavyNormalCompletionTest extends CompletionTestCase{
public void testMapsInvalidation() throws Exception {
configureByFile("/codeInsight/completion/normal/" + getTestName(false) + ".java");
assert myFile.getVirtualFile().getFileSystem() instanceof LocalFileSystem; // otherwise the completion copy won't be preserved which is critical here
assertStringItems("finalize", "foo");
assertStringItems("gAnInt", "getAaa", "getBbb");
myEditor.getCaretModel().moveToOffset(myEditor.getCaretModel().getOffset() + 2);
complete();
assertNull(myItems);