mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
drop caches on non-physical file context change (a more universal fix for EA-69690 - PIEAE: StubBasedPsiElementBase.getContainingFile)
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
package com.intellij.psi.resolve;
|
||||
|
||||
import com.intellij.codeInsight.AnnotationUtil;
|
||||
import com.intellij.ide.highlighter.JavaFileType;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.PsiElementFactoryImpl;
|
||||
import com.intellij.psi.impl.search.JavaSourceFilterScope;
|
||||
import com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
@@ -95,4 +97,14 @@ public class ResolveInCodeFragmentTest extends ResolveTestCase {
|
||||
PsiCodeBlock block = factory.createCodeBlockFromText("{ return o; }", method);
|
||||
assertInstanceOf(block.findReferenceAt(block.getText().indexOf("o")).resolve(), PsiParameter.class);
|
||||
}
|
||||
|
||||
public void testDropCachesOnNonPhysicalContextChange() {
|
||||
PsiElementFactoryImpl factory = (PsiElementFactoryImpl)JavaPsiFacade.getElementFactory(getProject());
|
||||
PsiClass superClass = ((PsiJavaFile) PsiFileFactory.getInstance(myProject).createFileFromText("a.java", JavaFileType.INSTANCE, "class Super { @Deprecated void foo(){} }")).getClasses()[0];
|
||||
PsiClass subClass = ((PsiNewExpression)factory.createExpressionFromText("new Super() { void foo(){} }", superClass)).getAnonymousClass();
|
||||
assertNotNull(AnnotationUtil.findAnnotationInHierarchy(subClass.getMethods()[0], Deprecated.class));
|
||||
|
||||
superClass.getMethods()[0].getModifierList().getAnnotations()[0].delete();
|
||||
assertNull(AnnotationUtil.findAnnotationInHierarchy(subClass.getMethods()[0], Deprecated.class));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user