summaryrefslogtreecommitdiff
path: root/platform/core-impl/src/com/intellij/psi/impl/PsiToDocumentSynchronizer.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/core-impl/src/com/intellij/psi/impl/PsiToDocumentSynchronizer.java')
-rw-r--r--platform/core-impl/src/com/intellij/psi/impl/PsiToDocumentSynchronizer.java16
1 files changed, 9 insertions, 7 deletions
diff --git a/platform/core-impl/src/com/intellij/psi/impl/PsiToDocumentSynchronizer.java b/platform/core-impl/src/com/intellij/psi/impl/PsiToDocumentSynchronizer.java
index 13c43571decb..60bae75fbe23 100644
--- a/platform/core-impl/src/com/intellij/psi/impl/PsiToDocumentSynchronizer.java
+++ b/platform/core-impl/src/com/intellij/psi/impl/PsiToDocumentSynchronizer.java
@@ -69,12 +69,14 @@ public class PsiToDocumentSynchronizer extends PsiTreeChangeAdapter {
void syncDocument(@NotNull Document document, @NotNull PsiTreeChangeEventImpl event);
}
- private void checkPsiModificationAllowed(@NotNull final PsiTreeChangeEvent event, boolean force) {
+ private void checkPsiModificationAllowed(@NotNull final PsiTreeChangeEvent event) {
if (!toProcessPsiEvent()) return;
final PsiFile psiFile = event.getFile();
if (psiFile == null || psiFile.getNode() == null) return;
- final Document document = myPsiDocumentManager.getCachedDocument(psiFile);
+ boolean forceDocument = !psiFile.getViewProvider().isPhysical();
+ final Document document = forceDocument ? myPsiDocumentManager.getDocument(psiFile)
+ : myPsiDocumentManager.getCachedDocument(psiFile);
if (document != null && myPsiDocumentManager.isUncommited(document)) {
throw new IllegalStateException("Attempt to modify PSI for non-committed Document!");
}
@@ -132,22 +134,22 @@ public class PsiToDocumentSynchronizer extends PsiTreeChangeAdapter {
@Override
public void beforeChildAddition(@NotNull PsiTreeChangeEvent event) {
- checkPsiModificationAllowed(event, false);
+ checkPsiModificationAllowed(event);
}
@Override
public void beforeChildRemoval(@NotNull PsiTreeChangeEvent event) {
- checkPsiModificationAllowed(event, false);
+ checkPsiModificationAllowed(event);
}
@Override
public void beforeChildReplacement(@NotNull PsiTreeChangeEvent event) {
- checkPsiModificationAllowed(event, false);
+ checkPsiModificationAllowed(event);
}
@Override
public void beforeChildrenChange(@NotNull PsiTreeChangeEvent event) {
- checkPsiModificationAllowed(event, false);
+ checkPsiModificationAllowed(event);
}
@Override
@@ -255,7 +257,7 @@ public class PsiToDocumentSynchronizer extends PsiTreeChangeAdapter {
final PsiTreeChangeEventImpl fakeEvent = new PsiTreeChangeEventImpl(changeScope.getManager());
fakeEvent.setParent(changeScope);
fakeEvent.setFile(changeScope.getContainingFile());
- checkPsiModificationAllowed(fakeEvent, true);
+ checkPsiModificationAllowed(fakeEvent);
doSync(fakeEvent, true, new DocSyncAction() {
@Override
public void syncDocument(@NotNull Document document, @NotNull PsiTreeChangeEventImpl event) {