diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageUtil.java b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageUtil.java index 411ebbed370e..42da2e201538 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageUtil.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageUtil.java @@ -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 cachedInjectedDocuments = getCachedInjectedDocuments(hostFile);