From 4cfa79f7658ab18787e55aa25f9f27210be9a949 Mon Sep 17 00:00:00 2001 From: "Ilya.Kazakevich" Date: Mon, 30 May 2016 20:03:45 +0300 Subject: [PATCH] Assertions added to get rid of unexpected exceptions --- .../resolve/QualifiedNameResolverImpl.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/python/src/com/jetbrains/python/psi/resolve/QualifiedNameResolverImpl.java b/python/src/com/jetbrains/python/psi/resolve/QualifiedNameResolverImpl.java index 2a7afb971ce6..5592b58c61c5 100644 --- a/python/src/com/jetbrains/python/psi/resolve/QualifiedNameResolverImpl.java +++ b/python/src/com/jetbrains/python/psi/resolve/QualifiedNameResolverImpl.java @@ -234,13 +234,17 @@ public class QualifiedNameResolverImpl implements RootVisitor, QualifiedNameReso } final PsiFile footholdFile = myContext.getFootholdFile(); + checkValidForTests(footholdFile); if (myRelativeLevel >= 0 && footholdFile != null && !PyUserSkeletonsUtil.isUnderUserSkeletonsDirectory(footholdFile)) { PsiDirectory dir = footholdFile.getContainingDirectory(); + checkValidForTests(dir); if (myRelativeLevel > 0) { dir = ResolveImportUtil.stepBackFrom(footholdFile, myRelativeLevel); + checkValidForTests(dir); } PsiElement module = resolveModuleAt(dir); + checkValidForTests(module); if (module != null) { addRoot(module, true); } @@ -251,6 +255,7 @@ public class QualifiedNameResolverImpl implements RootVisitor, QualifiedNameReso if (mayCache) { final List cachedResults = cache.get(myQualifiedName); if (cachedResults != null) { + cachedResults.stream().forEach(QualifiedNameResolverImpl::checkValidForTests); mySourceResults.addAll(cachedResults); return Lists.newArrayList(mySourceResults); } @@ -452,13 +457,9 @@ public class QualifiedNameResolverImpl implements RootVisitor, QualifiedNameReso if (file == null) { return null; } - if (ApplicationManager.getApplication().isUnitTestMode()) { - PyPsiUtils.assertValid(file); - } + checkValidForTests(file); for (final T element : PsiTreeUtil.getChildrenOfTypeAsList(file, aClass)) { - if (ApplicationManager.getApplication().isUnitTestMode()) { - PyPsiUtils.assertValid(element); - } + checkValidForTests(element); if (memberName.equals(element.getName())) { return element; } @@ -466,6 +467,12 @@ public class QualifiedNameResolverImpl implements RootVisitor, QualifiedNameReso return null; } + private static void checkValidForTests(@Nullable final PsiElement element) { + if (ApplicationManager.getApplication().isUnitTestMode()) { + PyPsiUtils.assertValid(element); + } + } + private static void checkAccess() { Preconditions.checkState(ApplicationManager.getApplication().isReadAccessAllowed(), "This method requires read access"); }