summaryrefslogtreecommitdiff
path: root/java/java-tests/testSrc/com/intellij/psi/MiscPsiTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/java-tests/testSrc/com/intellij/psi/MiscPsiTest.java')
-rw-r--r--java/java-tests/testSrc/com/intellij/psi/MiscPsiTest.java21
1 files changed, 21 insertions, 0 deletions
diff --git a/java/java-tests/testSrc/com/intellij/psi/MiscPsiTest.java b/java/java-tests/testSrc/com/intellij/psi/MiscPsiTest.java
index 61414ab0b416..2ed8233e99fe 100644
--- a/java/java-tests/testSrc/com/intellij/psi/MiscPsiTest.java
+++ b/java/java-tests/testSrc/com/intellij/psi/MiscPsiTest.java
@@ -24,6 +24,7 @@ import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.psi.impl.source.tree.LazyParseableElement;
+import com.intellij.testFramework.PlatformTestUtil;
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
import org.jetbrains.annotations.NotNull;
@@ -276,4 +277,24 @@ public class MiscPsiTest extends LightCodeInsightFixtureTestCase {
assertEquals("class A{}", psiClass.getText());
assertEquals(" class A{}", document.getText());
}
+
+ public void testASTBecomesInvalidOnExternalChange() {
+ final String text = "class A{}";
+ final PsiJavaFile file = (PsiJavaFile)myFixture.addFileToProject("a.java", text);
+ PsiElement leaf = file.findElementAt(5);
+
+ PlatformTestUtil.tryGcSoftlyReachableObjects();
+ assertNull(PsiDocumentManager.getInstance(getProject()).getCachedDocument(file));
+
+ new WriteCommandAction.Simple(getProject()) {
+ @Override
+ protected void run() throws Throwable {
+ VfsUtil.saveText(file.getVirtualFile(), text + " ");
+ }
+ }.execute();
+
+ assertTrue(file.isValid());
+ assertFalse(leaf.isValid());
+ assertNotSame(leaf, file.findElementAt(5));
+ }
}