mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 22:51:17 +07:00
javadoc: fix repeatable annotations check (IDEA-265396)
GitOrigin-RevId: cadc4dcdfb3d0b9604550f0eaa6b390ec4b19c09
This commit is contained in:
committed by
intellij-monorepo-bot
parent
c2ebab1d86
commit
a0b3b2cce3
@@ -197,7 +197,7 @@ public final class AnnotationDocGenerator {
|
||||
AnnotationDocGenerator anno = new AnnotationDocGenerator(annotation, nameReferenceElement, context);
|
||||
if (anno.isNonDocumentedAnnotation()) return null;
|
||||
|
||||
if (!(shownAnnotations.add(annotation.getQualifiedName()) || JavaDocInfoGenerator.isRepeatableAnnotationType(annotation))) return null;
|
||||
if (!(shownAnnotations.add(annotation.getQualifiedName()) || JavaDocInfoGenerator.isRepeatableAnnotationType(nameReferenceElement.resolve()))) return null;
|
||||
return anno;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
import java.lang.annotation.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@R("a")
|
||||
@R("b")
|
||||
class repeatableAnnotations {}
|
||||
|
||||
@Documented
|
||||
@Repeatable(R.Rs.class)
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
@Target({ElementType.FIELD, ElementType.TYPE})
|
||||
@interface R {
|
||||
String value();
|
||||
@Documented
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
@Target({ElementType.TYPE, ElementType.FIELD})
|
||||
public @interface Rs {
|
||||
R[] value();
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@ package com.intellij.java.codeInsight.javadoc;
|
||||
import com.intellij.JavaTestUtil;
|
||||
import com.intellij.codeInsight.AnnotationUtil;
|
||||
import com.intellij.codeInsight.JavaCodeInsightTestCase;
|
||||
import com.intellij.codeInsight.javadoc.JavaDocInfoGenerator;
|
||||
import com.intellij.java.codeInsight.JavaExternalDocumentationTest;
|
||||
import com.intellij.lang.java.JavaDocumentationProvider;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
@@ -113,6 +114,15 @@ public class JavaDocInfoGeneratorTest extends JavaCodeInsightTestCase {
|
||||
public void testTypeAnnotationArray() { useJava8(); doTestAtCaret(); }
|
||||
public void testTypeAnnotationClass() { useJava8(); doTestClass(); }
|
||||
|
||||
public void testRepeatableAnnotations() {
|
||||
useJava8();
|
||||
assertEquals("@R("a") \n" +
|
||||
"@R("b") \n" +
|
||||
"class <b>repeatableAnnotations</b>\n" +
|
||||
"extends <a href=\"psi_element://java.lang.Object\"><code>Object</code></a>",
|
||||
JavaDocInfoGenerator.generateSignature(getTestClass()));
|
||||
}
|
||||
|
||||
public void testAnonymousAndSuperJavadoc() {
|
||||
PsiClass psiClass = PsiTreeUtil.findChildOfType(getTestClass(), PsiAnonymousClass.class);
|
||||
assertNotNull(psiClass);
|
||||
|
||||
Reference in New Issue
Block a user