diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/bytecodeAnalysis/ProjectBytecodeAnalysis.java b/java/java-analysis-impl/src/com/intellij/codeInspection/bytecodeAnalysis/ProjectBytecodeAnalysis.java index 1258db655d49..374f2072d571 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/bytecodeAnalysis/ProjectBytecodeAnalysis.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/bytecodeAnalysis/ProjectBytecodeAnalysis.java @@ -30,6 +30,7 @@ import com.intellij.psi.search.ProjectScope; import com.intellij.psi.util.CachedValueProvider; import com.intellij.psi.util.CachedValuesManager; import com.intellij.psi.util.PsiFormatUtil; +import com.intellij.testFramework.LightVirtualFile; import com.intellij.util.IncorrectOperationException; import com.intellij.util.containers.Stack; import com.intellij.util.indexing.FileBasedIndex; @@ -385,6 +386,7 @@ public class ProjectBytecodeAnalysis { private PsiAnnotation createAnnotationFromText(@NotNull final String text) throws IncorrectOperationException { PsiAnnotation annotation = JavaPsiFacade.getElementFactory(myProject).createAnnotationFromText(text, null); annotation.putUserData(INFERRED_ANNOTATION, Boolean.TRUE); + ((LightVirtualFile)annotation.getContainingFile().getViewProvider().getVirtualFile()).markReadOnly(); return annotation; } } diff --git a/java/java-psi-impl/src/com/intellij/codeInsight/BaseExternalAnnotationsManager.java b/java/java-psi-impl/src/com/intellij/codeInsight/BaseExternalAnnotationsManager.java index 7e0d61d1948f..0f1e76a79c20 100644 --- a/java/java-psi-impl/src/com/intellij/codeInsight/BaseExternalAnnotationsManager.java +++ b/java/java-psi-impl/src/com/intellij/codeInsight/BaseExternalAnnotationsManager.java @@ -28,6 +28,7 @@ import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.*; import com.intellij.psi.impl.source.*; import com.intellij.psi.util.PsiFormatUtil; +import com.intellij.testFramework.LightVirtualFile; import com.intellij.util.Function; import com.intellij.util.IncorrectOperationException; import com.intellij.util.SmartList; @@ -399,6 +400,7 @@ public abstract class BaseExternalAnnotationsManager extends ExternalAnnotations private static PsiAnnotation markAsExternalAnnotation(@NotNull PsiAnnotation annotation) { annotation.putUserData(EXTERNAL_ANNO_MARKER, Boolean.TRUE); + ((LightVirtualFile)annotation.getContainingFile().getViewProvider().getVirtualFile()).markReadOnly(); return annotation; } diff --git a/platform/core-api/src/com/intellij/testFramework/LightVirtualFile.java b/platform/core-api/src/com/intellij/testFramework/LightVirtualFile.java index 719c23b46865..d80c41a325a2 100644 --- a/platform/core-api/src/com/intellij/testFramework/LightVirtualFile.java +++ b/platform/core-api/src/com/intellij/testFramework/LightVirtualFile.java @@ -34,6 +34,7 @@ import java.nio.charset.Charset; public class LightVirtualFile extends LightVirtualFileBase { private CharSequence myContent = ""; private Language myLanguage; + private boolean myReadOnly; public LightVirtualFile() { this(""); @@ -127,6 +128,7 @@ public class LightVirtualFile extends LightVirtualFileBase { } private void setContent(@NotNull CharSequence content) { + assert !myReadOnly; //StringUtil.assertValidSeparators(content); myContent = content; } @@ -136,6 +138,11 @@ public class LightVirtualFile extends LightVirtualFileBase { return myContent; } + public void markReadOnly() { + setWritable(false); + myReadOnly = true; + } + @Override public String toString() { return "LightVirtualFile: " + getPresentableUrl();