From 53bc348cb1b8475aae514d9d19853452573edae0 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Wed, 19 Mar 2008 18:08:19 +0300 Subject: [PATCH] filter duplicates by name in completion lists --- .../jetbrains/python/psi/PyResolveUtil.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/python/src/com/jetbrains/python/psi/PyResolveUtil.java b/python/src/com/jetbrains/python/psi/PyResolveUtil.java index 4e6c5de507ae..7e9921896a07 100644 --- a/python/src/com/jetbrains/python/psi/PyResolveUtil.java +++ b/python/src/com/jetbrains/python/psi/PyResolveUtil.java @@ -24,8 +24,7 @@ import com.intellij.psi.scope.PsiScopeProcessor; import com.jetbrains.python.psi.impl.PyScopeProcessor; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.List; +import java.util.*; /** * Created by IntelliJ IDEA. @@ -152,21 +151,26 @@ public class PyResolveUtil { } public static class VariantsProcessor implements PsiScopeProcessor { - private List _names = new ArrayList(); + private Map myVariants = new HashMap(); public LookupElement[] getResult() { - return _names.toArray(new LookupElement[_names.size()]); + final Collection variants = myVariants.values(); + return variants.toArray(new LookupElement[variants.size()]); } public boolean execute(PsiElement element, ResolveState substitutor) { if (element instanceof PsiNamedElement) { - _names.add(LookupElementFactory.getInstance().createLookupElement((PsiNamedElement) element)); + final PsiNamedElement psiNamedElement = (PsiNamedElement)element; + final String name = psiNamedElement.getName(); + if (!myVariants.containsKey(name)) { + myVariants.put(name, LookupElementFactory.getInstance().createLookupElement(psiNamedElement)); + } } else if (element instanceof PyReferenceExpression) { PyReferenceExpression expr = (PyReferenceExpression)element; String referencedName = expr.getReferencedName(); - if (referencedName != null) { - _names.add(LookupElementFactory.getInstance().createLookupElement(element, referencedName)); + if (referencedName != null && !myVariants.containsKey(referencedName)) { + myVariants.put(referencedName, LookupElementFactory.getInstance().createLookupElement(element, referencedName)); } }