diff --git a/platform/core-impl/src/com/intellij/util/CachedValuesManagerImpl.java b/platform/core-impl/src/com/intellij/util/CachedValuesManagerImpl.java index 3b9016e74677..67e249f2fea5 100644 --- a/platform/core-impl/src/com/intellij/util/CachedValuesManagerImpl.java +++ b/platform/core-impl/src/com/intellij/util/CachedValuesManagerImpl.java @@ -59,7 +59,7 @@ public class CachedValuesManagerImpl extends CachedValuesManager { if (dataHolder instanceof UserDataHolderEx) { UserDataHolderEx dh = (UserDataHolderEx)dataHolder; value = dh.getUserData(key); - if (value instanceof CachedValueBase && !((CachedValueBase)value).isFromMyProject(myProject)) { + if (isOutdated(value)) { value = null; dh.putUserData(key, null); } @@ -72,7 +72,7 @@ public class CachedValuesManagerImpl extends CachedValuesManager { else { synchronized (dataHolder) { value = dataHolder.getUserData(key); - if (value instanceof CachedValueBase && !((CachedValueBase)value).isFromMyProject(myProject)) { + if (isOutdated(value)) { value = null; } if (value == null) { @@ -84,6 +84,11 @@ public class CachedValuesManagerImpl extends CachedValuesManager { return value.getValue(); } + private boolean isOutdated(CachedValue value) { + return value instanceof CachedValueBase && + (!((CachedValueBase)value).isFromMyProject(myProject) || !value.hasUpToDateValue()); + } + public Project getProject() { return myProject; }