From 79c0c4985751b7985bcd35dba6dfdc50c84098a5 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Mon, 23 May 2011 15:17:38 +0400 Subject: [PATCH] index corruption recovery --- .../psi/impl/PyQualifiedReferenceImpl.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/python/src/com/jetbrains/python/psi/impl/PyQualifiedReferenceImpl.java b/python/src/com/jetbrains/python/psi/impl/PyQualifiedReferenceImpl.java index a7754520fb79..0b4f637d7a87 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyQualifiedReferenceImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyQualifiedReferenceImpl.java @@ -6,9 +6,11 @@ import com.intellij.codeInsight.lookup.LookupElementBuilder; import com.intellij.openapi.util.Comparing; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; +import com.intellij.psi.stubs.StubUpdatingIndex; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.ArrayUtil; import com.intellij.util.ProcessingContext; +import com.intellij.util.indexing.FileBasedIndex; import com.jetbrains.python.PyNames; import com.jetbrains.python.codeInsight.controlflow.ScopeOwner; import com.jetbrains.python.psi.*; @@ -70,10 +72,16 @@ public class PyQualifiedReferenceImpl extends PyReferenceImpl { } } else if (myContext.allowImplicits()) { - final Collection functions = PyFunctionNameIndex.find(referencedName, myElement.getProject()); - for (PyFunction function : functions) { - if (function.getContainingClass() != null) { - ret.add(new ImplicitResolveResult(function)); + final Collection functions = PyFunctionNameIndex.find(referencedName, myElement.getProject()); + for (Object function : functions) { + if (!(function instanceof PyFunction)) { + FileBasedIndex.getInstance().scheduleRebuild(StubUpdatingIndex.INDEX_ID, + new Throwable("found non-function object " + function + " in function list")); + break; + } + PyFunction pyFunction = (PyFunction) function; + if (pyFunction.getContainingClass() != null) { + ret.add(new ImplicitResolveResult(pyFunction)); } } }