mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
VirtualFileWindow should be invalidated together with DocumentWindow (EA-79578 - assert: PsiDocumentManagerBase.getLastCommittedDocument)
This commit is contained in:
@@ -16,10 +16,8 @@
|
||||
package com.intellij.psi.impl.smartPointers;
|
||||
|
||||
import com.intellij.openapi.command.WriteCommandAction;
|
||||
import com.intellij.psi.PsiAnchor;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiWhiteSpace;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.source.tree.injected.MyTestInjector;
|
||||
import com.intellij.psi.xml.XmlToken;
|
||||
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
|
||||
|
||||
@@ -39,4 +37,17 @@ public class PsiAnchorTest extends LightCodeInsightFixtureTestCase {
|
||||
assertNull(anchor.retrieve());
|
||||
}
|
||||
|
||||
public void testInjectedAnchor() {
|
||||
new MyTestInjector(getPsiManager()).injectAll(getTestRootDisposable());
|
||||
myFixture.configureByText("a.java", "class X { String java=\"class <caret>Foo {}\"}");
|
||||
PsiClass cls = (PsiClass)myFixture.getElementAtCaret();
|
||||
assertEquals("Foo", cls.getName());
|
||||
PsiAnchor anchor = PsiAnchor.create(cls);
|
||||
|
||||
myFixture.type('\n');
|
||||
PsiDocumentManager.getInstance(getProject()).commitAllDocuments();
|
||||
|
||||
assertNull(anchor.retrieve()); // file is changed, so we can't restore. But this call shouldn't throw exceptions.
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ public class VirtualFileWindowImpl extends LightVirtualFile implements VirtualFi
|
||||
|
||||
@Override
|
||||
public boolean isValid() {
|
||||
return myDelegate.isValid();
|
||||
return myDelegate.isValid() && myDocumentWindow.isValid();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user