From 197e1131142a583c93e449b886c38ee5e720d3f4 Mon Sep 17 00:00:00 2001 From: Andrzej Ratajczak Date: Tue, 8 Feb 2022 12:52:17 +0100 Subject: [PATCH] Expose Kotlin-as-Java methods that could be used not only as part of transformers --- plugins/kotlin-as-java/api/kotlin-as-java.api | 2 + .../converters/KotlinToJavaConverter.kt | 2 +- .../JvmNameDocumentableTransformer.kt | 55 +++++++++---------- 3 files changed, 30 insertions(+), 29 deletions(-) diff --git a/plugins/kotlin-as-java/api/kotlin-as-java.api b/plugins/kotlin-as-java/api/kotlin-as-java.api index f941582ecd..c744d8377d 100644 --- a/plugins/kotlin-as-java/api/kotlin-as-java.api +++ b/plugins/kotlin-as-java/api/kotlin-as-java.api @@ -7,6 +7,7 @@ public final class org/jetbrains/dokka/kotlinAsJava/KotlinAsJavaPlugin : org/jet } public final class org/jetbrains/dokka/kotlinAsJava/converters/KotlinToJavaConverterKt { + public static final fun asJava (Lorg/jetbrains/dokka/model/DClasslike;)Lorg/jetbrains/dokka/model/DClasslike; public static final fun getJvmNameProvider ()Lorg/jetbrains/dokka/kotlinAsJava/transformers/JvmNameProvider; } @@ -48,6 +49,7 @@ public final class org/jetbrains/dokka/kotlinAsJava/signatures/JavaSignatureUtil public final class org/jetbrains/dokka/kotlinAsJava/transformers/JvmNameDocumentableTransformer : org/jetbrains/dokka/transformers/documentation/DocumentableTransformer { public fun ()V public fun invoke (Lorg/jetbrains/dokka/model/DModule;Lorg/jetbrains/dokka/plugability/DokkaContext;)Lorg/jetbrains/dokka/model/DModule; + public final fun transformClassLike (Lorg/jetbrains/dokka/model/DClasslike;Lorg/jetbrains/dokka/plugability/DokkaContext;)Lorg/jetbrains/dokka/model/DClasslike; } public final class org/jetbrains/dokka/kotlinAsJava/transformers/JvmNameProvider { diff --git a/plugins/kotlin-as-java/src/main/kotlin/converters/KotlinToJavaConverter.kt b/plugins/kotlin-as-java/src/main/kotlin/converters/KotlinToJavaConverter.kt index 2a0762baee..078ac15ae9 100644 --- a/plugins/kotlin-as-java/src/main/kotlin/converters/KotlinToJavaConverter.kt +++ b/plugins/kotlin-as-java/src/main/kotlin/converters/KotlinToJavaConverter.kt @@ -241,7 +241,7 @@ internal fun DFunction.asJava(containingClassName: String, isTopLevel: Boolean = } } -internal fun DClasslike.asJava(): DClasslike = when (this) { +fun DClasslike.asJava(): DClasslike = when (this) { is DClass -> asJava() is DEnum -> asJava() is DAnnotation -> asJava() diff --git a/plugins/kotlin-as-java/src/main/kotlin/transformers/JvmNameDocumentableTransformer.kt b/plugins/kotlin-as-java/src/main/kotlin/transformers/JvmNameDocumentableTransformer.kt index c49e08f0ad..70ea9171df 100644 --- a/plugins/kotlin-as-java/src/main/kotlin/transformers/JvmNameDocumentableTransformer.kt +++ b/plugins/kotlin-as-java/src/main/kotlin/transformers/JvmNameDocumentableTransformer.kt @@ -7,20 +7,18 @@ import org.jetbrains.dokka.transformers.documentation.DocumentableTransformer class JvmNameDocumentableTransformer : DocumentableTransformer { private val jvmNameProvider = JvmNameProvider() - private lateinit var context: DokkaContext override fun invoke(original: DModule, context: DokkaContext): DModule { - this.context = context - return original.copy(packages = original.packages.map { transform(it) }) + return original.copy(packages = original.packages.map { transform(it, context) }) } - private fun transform(documentable: T): T = + private fun transform(documentable: T, context: DokkaContext): T = with(documentable) { when (this) { is DPackage -> copy( - functions = functions.map { transform(it) }, - properties = properties.map { transform(it) }, - classlikes = classlikes.map { transform(it) }, + functions = functions.map { transform(it, context) }, + properties = properties.map { transform(it, context) }, + classlikes = classlikes.map { transform(it, context) }, ) is DFunction -> { val name = jvmNameProvider.nameFor(this) @@ -31,11 +29,11 @@ class JvmNameDocumentableTransformer : DocumentableTransformer { ) } is DProperty -> transformGetterAndSetter(this) - is DClasslike -> transformClassLike(this) + is DClasslike -> transformClassLike(this, context) is DEnumEntry -> copy( - functions = functions.map { transform(it) }, - properties = properties.map { transform(it) }, - classlikes = classlikes.map { transform(it) }, + functions = functions.map { transform(it, context) }, + properties = properties.map { transform(it, context) }, + classlikes = classlikes.map { transform(it, context) }, ) else -> { context.logger.warn("Failed to translate a JvmName for ${this.javaClass.canonicalName}") @@ -55,33 +53,34 @@ class JvmNameDocumentableTransformer : DocumentableTransformer { return extraWithoutAnnotations.addAll(listOfNotNull(annotationsWithoutJvmName)) } - private fun transformClassLike(documentable: DClasslike): DClasslike = + @Suppress("MemberVisibilityCanBePrivate") + fun transformClassLike(documentable: DClasslike, context: DokkaContext): DClasslike = with(documentable) { when (this) { is DClass -> copy( - functions = functions.map { transform(it) }, - properties = properties.map { transform(it) }, - classlikes = classlikes.map { transform(it) }, + functions = functions.map { transform(it, context) }, + properties = properties.map { transform(it, context) }, + classlikes = classlikes.map { transform(it, context) }, ) is DAnnotation -> copy( - functions = functions.map { transform(it) }, - properties = properties.map { transform(it) }, - classlikes = classlikes.map { transform(it) }, + functions = functions.map { transform(it, context) }, + properties = properties.map { transform(it, context) }, + classlikes = classlikes.map { transform(it, context) }, ) is DObject -> copy( - functions = functions.map { transform(it) }, - properties = properties.map { transform(it) }, - classlikes = classlikes.map { transform(it) }, + functions = functions.map { transform(it, context) }, + properties = properties.map { transform(it, context) }, + classlikes = classlikes.map { transform(it, context) }, ) is DEnum -> copy( - functions = functions.map { transform(it) }, - properties = properties.map { transform(it) }, - classlikes = classlikes.map { transform(it) }, + functions = functions.map { transform(it, context) }, + properties = properties.map { transform(it, context) }, + classlikes = classlikes.map { transform(it, context) }, ) is DInterface -> copy( - functions = functions.map { transform(it) }, - properties = properties.map { transform(it) }, - classlikes = classlikes.map { transform(it) }, + functions = functions.map { transform(it, context) }, + properties = properties.map { transform(it, context) }, + classlikes = classlikes.map { transform(it, context) }, ) } } @@ -108,4 +107,4 @@ class JvmNameDocumentableTransformer : DocumentableTransformer { } }) } -} \ No newline at end of file +}