diff options
author | Vadim Mishenev <vad-mishenev@yandex.ru> | 2023-11-22 17:14:14 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-22 16:14:14 +0200 |
commit | 610b5520b02ce8275462793e176406d1fb37861c (patch) | |
tree | 3bba662233610e6dba02ff3b40d6743ea9af0f70 /dokka-subprojects/analysis-kotlin-descriptors-compiler | |
parent | 04623bff02cf5486ca054f986b4b05818800f554 (diff) | |
download | dokka-610b5520b02ce8275462793e176406d1fb37861c.tar.gz dokka-610b5520b02ce8275462793e176406d1fb37861c.tar.bz2 dokka-610b5520b02ce8275462793e176406d1fb37861c.zip |
Do not find javadoc for non-JVM source set (#3346)
* Add test
* Do not find javadoc for non-JVM source set
* [K2] Add javadoc parser for external documentable Provider
Diffstat (limited to 'dokka-subprojects/analysis-kotlin-descriptors-compiler')
-rw-r--r-- | dokka-subprojects/analysis-kotlin-descriptors-compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/translator/DefaultDescriptorToDocumentableTranslator.kt | 39 |
1 files changed, 24 insertions, 15 deletions
diff --git a/dokka-subprojects/analysis-kotlin-descriptors-compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/translator/DefaultDescriptorToDocumentableTranslator.kt b/dokka-subprojects/analysis-kotlin-descriptors-compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/translator/DefaultDescriptorToDocumentableTranslator.kt index 4d561189..04b2cb20 100644 --- a/dokka-subprojects/analysis-kotlin-descriptors-compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/translator/DefaultDescriptorToDocumentableTranslator.kt +++ b/dokka-subprojects/analysis-kotlin-descriptors-compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/translator/DefaultDescriptorToDocumentableTranslator.kt @@ -9,6 +9,7 @@ import com.intellij.psi.PsiNamedElement import com.intellij.psi.util.PsiLiteralUtil.* import kotlinx.coroutines.* import org.jetbrains.dokka.DokkaConfiguration.DokkaSourceSet +import org.jetbrains.dokka.Platform import org.jetbrains.dokka.analysis.java.JavaAnalysisPlugin import org.jetbrains.dokka.analysis.java.parsers.JavadocParser import org.jetbrains.dokka.analysis.kotlin.descriptors.compiler.CompilerDescriptorAnalysisPlugin @@ -98,11 +99,13 @@ internal class DefaultDescriptorToDocumentableTranslator( .mapNotNull { analysisContext.resolveSession.getPackageFragment(it) } .toList() - val javadocParser = JavadocParser( - docCommentParsers = context.plugin<JavaAnalysisPlugin>().query { docCommentParsers }, - docCommentFinder = context.plugin<JavaAnalysisPlugin>().docCommentFinder - ) - + val javadocParser = + if (sourceSet.analysisPlatform == Platform.jvm) + JavadocParser( + docCommentParsers = context.plugin<JavaAnalysisPlugin>().query { docCommentParsers }, + docCommentFinder = context.plugin<JavaAnalysisPlugin>().docCommentFinder + ) + else null return DokkaDescriptorVisitor(sourceSet, kdocFinder, kotlinAnalysis[sourceSet], context.logger, javadocParser).run { packageFragments.parallelMap { @@ -128,10 +131,13 @@ internal class DefaultDescriptorToDocumentableTranslator( override fun translateClassDescriptor(descriptor: ClassDescriptor, sourceSet: DokkaSourceSet): DClasslike { val driInfo = DRI.from(descriptor.parents.first()).withEmptyInfo() - val javadocParser = JavadocParser( - docCommentParsers = context.plugin<JavaAnalysisPlugin>().query { docCommentParsers }, - docCommentFinder = context.plugin<JavaAnalysisPlugin>().docCommentFinder - ) + val javadocParser = + if (sourceSet.analysisPlatform == Platform.jvm) + JavadocParser( + docCommentParsers = context.plugin<JavaAnalysisPlugin>().query { docCommentParsers }, + docCommentFinder = context.plugin<JavaAnalysisPlugin>().docCommentFinder + ) + else null return newSingleThreadContext("Generating documentable model of classlike").use { coroutineContext -> // see https://github.com/Kotlin/dokka/issues/3151 runBlocking(coroutineContext) { @@ -149,12 +155,15 @@ internal data class DRIWithPlatformInfo( internal fun DRI.withEmptyInfo() = DRIWithPlatformInfo(this, emptyMap()) +/** + * @param javadocParser can be null for non JVM platform + */ private class DokkaDescriptorVisitor( private val sourceSet: DokkaSourceSet, private val kDocFinder: KDocFinder, private val analysisContext: AnalysisContext, private val logger: DokkaLogger, - private val javadocParser: JavadocParser + private val javadocParser: JavadocParser? = null ) { private val syntheticDocProvider = SyntheticDescriptorDocumentationProvider(kDocFinder, sourceSet) @@ -1080,16 +1089,16 @@ private class DokkaDescriptorVisitor( else it } ) - } ?: getJavaDocs())?.takeIf { it.children.isNotEmpty() } + } ?: javadocParser?.getJavaDocs(this))?.takeIf { it.children.isNotEmpty() } } - private fun DeclarationDescriptor.getJavaDocs(): DocumentationNode? { - val overriddenDescriptors = (this as? CallableDescriptor)?.overriddenDescriptors ?: emptyList() - val allDescriptors = overriddenDescriptors + listOf(this) + private fun JavadocParser.getJavaDocs(declarationDescriptor: DeclarationDescriptor): DocumentationNode? { + val overriddenDescriptors = (declarationDescriptor as? CallableDescriptor)?.overriddenDescriptors ?: emptyList() + val allDescriptors = overriddenDescriptors + listOf(declarationDescriptor) return allDescriptors .mapNotNull { it.findPsi() as? PsiNamedElement } .firstOrNull() - ?.let { javadocParser.parseDocumentation(it) } + ?.let { parseDocumentation(it) } } private suspend fun ClassDescriptor.companion(dri: DRIWithPlatformInfo): DObject? = companionObjectDescriptor?.let { |