invalidate injected PSI without retrieving its host smart pointer PSI

This commit is contained in:
peter
2017-04-06 18:26:28 +02:00
parent 69914f5aaf
commit e5b450372a
@@ -456,16 +456,13 @@ public class InjectedLanguageUtil {
DebugUtil.finishPsiModification();
}
PsiElement context = InjectedLanguageManager.getInstance(injected.getProject()).getInjectionHost(injected);
PsiFile hostFile;
if (context != null) {
hostFile = context.getContainingFile();
}
else {
VirtualFile delegate = virtualFile.getDelegate();
hostFile = delegate.isValid() ? psiManagerEx.findFile(delegate) : null;
}
if (hostFile != null) {
VirtualFile delegate = virtualFile.getDelegate();
if (!delegate.isValid()) return;
FileViewProvider viewProvider = psiManagerEx.getFileManager().findCachedViewProvider(delegate);
if (!(viewProvider instanceof SingleRootFileViewProvider)) return;
for (PsiFile hostFile : ((SingleRootFileViewProvider)viewProvider).getCachedPsiFiles()) {
// modification of cachedInjectedDocuments must be under PsiLock
synchronized (InjectedLanguageManagerImpl.ourInjectionPsiLock) {
List<DocumentWindow> cachedInjectedDocuments = getCachedInjectedDocuments(hostFile);