From 066c551fc6fcb2c60e3ed2014d0ef5e11409f9eb Mon Sep 17 00:00:00 2001 From: Ember Rose Date: Thu, 27 Jan 2022 05:27:02 -0500 Subject: Collect annotations from package-info.java (#2331) Fix: #2330 --- .../psi/DefaultPsiToDocumentableTranslator.kt | 11 ++++++--- .../DefaultPsiToDocumentableTranslatorTest.kt | 27 ++++++++++++++++++++++ 2 files changed, 35 insertions(+), 3 deletions(-) (limited to 'plugins/base/src') diff --git a/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt b/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt index 79b4798c..d912d65f 100644 --- a/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt +++ b/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt @@ -150,9 +150,11 @@ class DefaultPsiToDocumentableTranslator( suspend fun parsePackage(packageName: String, psiFiles: List): DPackage = coroutineScope { val dri = DRI(packageName = packageName) - val documentation = psiFiles.firstOrNull { it.name == "package-info.java" }?.let { + val packageInfo = psiFiles.singleOrNull { it.name == "package-info.java" } + val documentation = packageInfo?.let { javadocParser.parseDocumentation(it).toSourceSetDependent() - } ?: emptyMap() + }.orEmpty() + val annotations = packageInfo?.packageStatement?.annotationList?.annotations DPackage( dri, @@ -166,7 +168,10 @@ class DefaultPsiToDocumentableTranslator( emptyList(), documentation, null, - setOf(sourceSetData) + setOf(sourceSetData), + PropertyContainer.withAll( + annotations?.toList().orEmpty().toListOfAnnotations().toSourceSetDependent().toAnnotations() + ) ) } diff --git a/plugins/base/src/test/kotlin/translators/DefaultPsiToDocumentableTranslatorTest.kt b/plugins/base/src/test/kotlin/translators/DefaultPsiToDocumentableTranslatorTest.kt index 5cbd4416..27a06b77 100644 --- a/plugins/base/src/test/kotlin/translators/DefaultPsiToDocumentableTranslatorTest.kt +++ b/plugins/base/src/test/kotlin/translators/DefaultPsiToDocumentableTranslatorTest.kt @@ -3,6 +3,8 @@ package translators import org.jetbrains.dokka.model.doc.Text import org.jetbrains.dokka.model.firstMemberOfType import org.jetbrains.dokka.base.testApi.testRunner.BaseAbstractTest +import org.jetbrains.dokka.links.DRI +import org.jetbrains.dokka.model.Annotations import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertTrue import org.junit.jupiter.api.Test @@ -166,4 +168,29 @@ class DefaultPsiToDocumentableTranslatorTest : BaseAbstractTest() { } } } + + @Test + fun `java package-info package annotations`() { + testInline( + """ + |/src/main/java/sample/PackageAnnotation.java + |package sample; + |@java.lang.annotation.Target(java.lang.annotation.ElementType.PACKAGE) + |public @interface PackageAnnotation { + |} + | + |/src/main/java/sample/package-info.java + |@PackageAnnotation + |package sample; + """.trimMargin(), + configuration + ) { + documentablesMergingStage = { module -> + assertEquals( + Annotations.Annotation(DRI("sample", "PackageAnnotation"), emptyMap()), + module.packages.single().extra[Annotations]?.directAnnotations?.values?.single()?.single() + ) + } + } + } } -- cgit