mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
external annotations: don't suggest to configure when annotation already in the code (IDEA-198591)
GitOrigin-RevId: 4ba386f93d24dc0b254ba4fd8e8fce34c3e2b902
This commit is contained in:
committed by
intellij-monorepo-bot
parent
1b57510f2b
commit
3130fbc85e
+5
-1
@@ -12,6 +12,7 @@ import com.intellij.lang.findUsages.LanguageFindUsages;
|
||||
import com.intellij.openapi.command.WriteCommandAction;
|
||||
import com.intellij.openapi.command.undo.UndoUtil;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
|
||||
import com.intellij.psi.impl.light.LightElement;
|
||||
@@ -140,7 +141,10 @@ public class AddAnnotationPsiFix extends LocalQuickFixOnPsiElement {
|
||||
if (modifierList == null || modifierList.hasAnnotation(myAnnotation)) return;
|
||||
PsiClass aClass = JavaPsiFacade.getInstance(project).findClass(myAnnotation, myModifierListOwner.getResolveScope());
|
||||
final ExternalAnnotationsManager.AnnotationPlace annotationAnnotationPlace;
|
||||
if (aClass != null && BaseIntentionAction.canModify(myModifierListOwner) && AnnotationsHighlightUtil.getRetentionPolicy(aClass) == RetentionPolicy.RUNTIME) {
|
||||
if (aClass != null && BaseIntentionAction.canModify(myModifierListOwner) &&
|
||||
(AnnotationsHighlightUtil.getRetentionPolicy(aClass) == RetentionPolicy.RUNTIME ||
|
||||
JavaPsiFacade.getInstance(project).getResolveHelper()//if class is already imported in current file
|
||||
.resolveReferencedClass(StringUtil.getShortName(myAnnotation), myModifierListOwner) != null)) {
|
||||
annotationAnnotationPlace = ExternalAnnotationsManager.AnnotationPlace.IN_CODE;
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
package withAnnotation;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
public class Foo {
|
||||
String f<caret>oo() {return null;}
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
package withAnnotation;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
public class Foo {
|
||||
@Nullable
|
||||
String f<caret>oo() {return null;}
|
||||
}
|
||||
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.intellij.java.codeInsight;
|
||||
|
||||
import com.intellij.codeInsight.intention.AddAnnotationPsiFix;
|
||||
import com.intellij.codeInsight.intention.IntentionAction;
|
||||
import com.intellij.openapi.application.ex.PathManagerEx;
|
||||
import com.intellij.openapi.module.Module;
|
||||
@@ -22,7 +23,10 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.JavaModuleExternalPaths;
|
||||
import com.intellij.openapi.roots.ModuleRootModificationUtil;
|
||||
import com.intellij.openapi.vfs.VfsUtilCore;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleSettings;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.testFramework.UsefulTestCase;
|
||||
import com.intellij.testFramework.builders.JavaModuleFixtureBuilder;
|
||||
import com.intellij.testFramework.fixtures.*;
|
||||
@@ -69,6 +73,14 @@ public class ExternalAnnotationsTest extends UsefulTestCase {
|
||||
}
|
||||
}
|
||||
|
||||
public void testAddedAnnotationInCodeWhenAlreadyPresent() {
|
||||
PsiFile file = myFixture.configureByFile("src/withAnnotation/Foo.java");
|
||||
PsiMethod method = PsiTreeUtil.getParentOfType(myFixture.getElementAtCaret(), PsiMethod.class, false);
|
||||
assertNotNull(method);
|
||||
AddAnnotationPsiFix.createAddNullableFix(method).invoke(myFixture.getProject(), file, method, method);
|
||||
myFixture.checkResultByFile("src/withAnnotation/Foo_after.java");
|
||||
}
|
||||
|
||||
public void testRenameClassWithExternalAnnotations() {
|
||||
myFixture.configureByFiles("src/rename/Foo.java", "content/anno/rename/annotations.xml");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user