From 32211a7f8f9bcc71a17bbd8a25f926deba96e516 Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Tue, 25 Nov 2014 16:37:23 +0300 Subject: [PATCH] fixed PsiInvalidElementAccessException for invalid elements stored in PythonPathCache clear PythonPathCache on pushLanguageLevel --- .../psi/impl/PythonLanguageLevelPusher.java | 36 ++++++++++++++----- .../python/psi/resolve/PythonPathCache.java | 2 +- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/python/src/com/jetbrains/python/psi/impl/PythonLanguageLevelPusher.java b/python/src/com/jetbrains/python/psi/impl/PythonLanguageLevelPusher.java index 9cb4b6a7b8f7..c93f776948ba 100644 --- a/python/src/com/jetbrains/python/psi/impl/PythonLanguageLevelPusher.java +++ b/python/src/com/jetbrains/python/psi/impl/PythonLanguageLevelPusher.java @@ -27,8 +27,12 @@ import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.module.ModuleType; import com.intellij.openapi.module.ModuleUtilCore; import com.intellij.openapi.project.Project; +import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.projectRoots.Sdk; -import com.intellij.openapi.roots.*; +import com.intellij.openapi.roots.JdkOrderEntry; +import com.intellij.openapi.roots.OrderEntry; +import com.intellij.openapi.roots.OrderRootType; +import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.roots.impl.FilePropertyPusher; import com.intellij.openapi.roots.impl.PushedFilePropertiesUpdater; import com.intellij.openapi.util.Key; @@ -45,6 +49,7 @@ import com.jetbrains.python.PythonFileType; import com.jetbrains.python.PythonModuleTypeBase; import com.jetbrains.python.facet.PythonFacetSettings; import com.jetbrains.python.psi.LanguageLevel; +import com.jetbrains.python.psi.resolve.PythonSdkPathCache; import com.jetbrains.python.sdk.PythonSdkType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -97,22 +102,25 @@ public class PythonLanguageLevelPusher implements FilePropertyPusher updatedSdks = new HashSet(); final Module[] modules = ModuleManager.getInstance(project).getModules(); diff --git a/python/src/com/jetbrains/python/psi/resolve/PythonPathCache.java b/python/src/com/jetbrains/python/psi/resolve/PythonPathCache.java index d2c0aa684fcd..efa6b813292b 100644 --- a/python/src/com/jetbrains/python/psi/resolve/PythonPathCache.java +++ b/python/src/com/jetbrains/python/psi/resolve/PythonPathCache.java @@ -31,7 +31,7 @@ public abstract class PythonPathCache { private final Map> myCache = new HashMap>(); private final Map> myQNameCache = new HashMap>(); - protected void clearCache() { + public void clearCache() { myCache.clear(); myQNameCache.clear(); }