mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
don't allow to delete external/inferred annotations (EA-65757 - PIEAE: PsiUtilCore.ensureValid)
This commit is contained in:
+2
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user