mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-04 17:20:55 +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);
|
AnnotationDocGenerator anno = new AnnotationDocGenerator(annotation, nameReferenceElement, context);
|
||||||
if (anno.isNonDocumentedAnnotation()) return null;
|
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;
|
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.JavaTestUtil;
|
||||||
import com.intellij.codeInsight.AnnotationUtil;
|
import com.intellij.codeInsight.AnnotationUtil;
|
||||||
import com.intellij.codeInsight.JavaCodeInsightTestCase;
|
import com.intellij.codeInsight.JavaCodeInsightTestCase;
|
||||||
|
import com.intellij.codeInsight.javadoc.JavaDocInfoGenerator;
|
||||||
import com.intellij.java.codeInsight.JavaExternalDocumentationTest;
|
import com.intellij.java.codeInsight.JavaExternalDocumentationTest;
|
||||||
import com.intellij.lang.java.JavaDocumentationProvider;
|
import com.intellij.lang.java.JavaDocumentationProvider;
|
||||||
import com.intellij.openapi.application.ApplicationManager;
|
import com.intellij.openapi.application.ApplicationManager;
|
||||||
@@ -113,6 +114,15 @@ public class JavaDocInfoGeneratorTest extends JavaCodeInsightTestCase {
|
|||||||
public void testTypeAnnotationArray() { useJava8(); doTestAtCaret(); }
|
public void testTypeAnnotationArray() { useJava8(); doTestAtCaret(); }
|
||||||
public void testTypeAnnotationClass() { useJava8(); doTestClass(); }
|
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() {
|
public void testAnonymousAndSuperJavadoc() {
|
||||||
PsiClass psiClass = PsiTreeUtil.findChildOfType(getTestClass(), PsiAnonymousClass.class);
|
PsiClass psiClass = PsiTreeUtil.findChildOfType(getTestClass(), PsiAnonymousClass.class);
|
||||||
assertNotNull(psiClass);
|
assertNotNull(psiClass);
|
||||||
|
|||||||
Reference in New Issue
Block a user