mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-07 22:09:38 +07:00
AnnotationCacheOwnerNormalizer: added normalizer for elements with cache (EA-354371)
GitOrigin-RevId: 523de13f3c36509682dbd8bbcbe15e1c7270233f
This commit is contained in:
committed by
intellij-monorepo-bot
parent
b54911d412
commit
4d17737f2b
@@ -122,11 +122,12 @@ public class AnnotationUtil {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static List<PsiAnnotation> findNonCodeAnnotations(@NotNull PsiModifierListOwner listOwner, @NotNull Collection<String> annotationNames) {
|
||||
if (listOwner instanceof PsiLocalVariable) {
|
||||
private static List<PsiAnnotation> findNonCodeAnnotations(@NotNull PsiModifierListOwner element, @NotNull Collection<String> annotationNames) {
|
||||
if (element instanceof PsiLocalVariable) {
|
||||
// Non-code annotations for local variables are not supported: don't bother to search them
|
||||
return null;
|
||||
}
|
||||
PsiModifierListOwner listOwner = AnnotationCacheOwnerNormalizer.normalize(element);
|
||||
Map<Collection<String>, List<PsiAnnotation>> map = CachedValuesManager.getCachedValue(
|
||||
listOwner,
|
||||
() -> {
|
||||
@@ -181,19 +182,20 @@ public class AnnotationUtil {
|
||||
|
||||
@NotNull
|
||||
public static <T extends PsiModifierListOwner> List<T> getSuperAnnotationOwners(@NotNull T element) {
|
||||
return CachedValuesManager.getCachedValue(element, () -> {
|
||||
PsiModifierListOwner listOwner = AnnotationCacheOwnerNormalizer.normalize(element);
|
||||
return CachedValuesManager.getCachedValue(listOwner, () -> {
|
||||
Set<PsiModifierListOwner> result = new LinkedHashSet<>();
|
||||
if (element instanceof PsiMethod) {
|
||||
if (!element.hasModifierProperty(PsiModifier.STATIC)) {
|
||||
collectSuperMethods(result, ((PsiMethod)element).getHierarchicalMethodSignature(), element,
|
||||
JavaPsiFacade.getInstance(element.getProject()).getResolveHelper());
|
||||
if (listOwner instanceof PsiMethod) {
|
||||
if (!listOwner.hasModifierProperty(PsiModifier.STATIC)) {
|
||||
collectSuperMethods(result, ((PsiMethod)listOwner).getHierarchicalMethodSignature(), listOwner,
|
||||
JavaPsiFacade.getInstance(listOwner.getProject()).getResolveHelper());
|
||||
}
|
||||
}
|
||||
else if (element instanceof PsiClass) {
|
||||
InheritanceUtil.processSupers((PsiClass)element, false, Processors.cancelableCollectProcessor(result));
|
||||
else if (listOwner instanceof PsiClass) {
|
||||
InheritanceUtil.processSupers((PsiClass)listOwner, false, Processors.cancelableCollectProcessor(result));
|
||||
}
|
||||
else if (element instanceof PsiParameter) {
|
||||
collectSuperParameters(result, (PsiParameter)element);
|
||||
else if (listOwner instanceof PsiParameter) {
|
||||
collectSuperParameters(result, (PsiParameter)listOwner);
|
||||
}
|
||||
|
||||
List<T> list;
|
||||
|
||||
Reference in New Issue
Block a user