mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-07 22:09:38 +07:00
external annotations: ensure runtime annotations are inserted in code (IDEA-170720)
This commit is contained in:
@@ -18,6 +18,7 @@ package com.intellij.codeInsight.intention;
|
||||
import com.intellij.codeInsight.AnnotationUtil;
|
||||
import com.intellij.codeInsight.CodeInsightBundle;
|
||||
import com.intellij.codeInsight.ExternalAnnotationsManager;
|
||||
import com.intellij.codeInsight.daemon.impl.analysis.AnnotationsHighlightUtil;
|
||||
import com.intellij.codeInspection.LocalQuickFixOnPsiElement;
|
||||
import com.intellij.lang.findUsages.FindUsagesProvider;
|
||||
import com.intellij.lang.findUsages.LanguageFindUsages;
|
||||
@@ -32,6 +33,8 @@ import com.intellij.util.ObjectUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
|
||||
public class AddAnnotationPsiFix extends LocalQuickFixOnPsiElement {
|
||||
protected final String myAnnotation;
|
||||
private final String[] myAnnotationsToRemove;
|
||||
@@ -130,7 +133,14 @@ public class AddAnnotationPsiFix extends LocalQuickFixOnPsiElement {
|
||||
final ExternalAnnotationsManager annotationsManager = ExternalAnnotationsManager.getInstance(project);
|
||||
final PsiModifierList modifierList = myModifierListOwner.getModifierList();
|
||||
if (modifierList == null || modifierList.findAnnotation(myAnnotation) != null) return;
|
||||
final ExternalAnnotationsManager.AnnotationPlace annotationAnnotationPlace = annotationsManager.chooseAnnotationsPlace(myModifierListOwner);
|
||||
PsiClass aClass = JavaPsiFacade.getInstance(project).findClass(myAnnotation, myModifierListOwner.getResolveScope());
|
||||
final ExternalAnnotationsManager.AnnotationPlace annotationAnnotationPlace;
|
||||
if (aClass != null && AnnotationsHighlightUtil.getRetentionPolicy(aClass) == RetentionPolicy.RUNTIME) {
|
||||
annotationAnnotationPlace = ExternalAnnotationsManager.AnnotationPlace.IN_CODE;
|
||||
}
|
||||
else {
|
||||
annotationAnnotationPlace = annotationsManager.chooseAnnotationsPlace(myModifierListOwner);
|
||||
}
|
||||
if (annotationAnnotationPlace == ExternalAnnotationsManager.AnnotationPlace.NOWHERE) return;
|
||||
if (annotationAnnotationPlace == ExternalAnnotationsManager.AnnotationPlace.EXTERNAL) {
|
||||
for (String fqn : myAnnotationsToRemove) {
|
||||
|
||||
Reference in New Issue
Block a user