From b78c410b35d01bd29523b18514b3c3d7a59ed29c Mon Sep 17 00:00:00 2001 From: Ebrahim Byagowi Date: Fri, 13 May 2022 00:07:15 +0430 Subject: [PATCH 1/2] Don't expose enum constructor arguments to documentation Enum constructor arguments is mostly internal detail of enums that isn't supposed to be exposed to clients of some library so let's don't put it in the generated documentations result. --- core/api/core.api | 18 ------- .../src/main/kotlin/model/additionalExtras.kt | 9 ---- .../signatures/KotlinSignatureProvider.kt | 11 ---- ...faultDescriptorToDocumentableTranslator.kt | 3 +- .../base/src/test/kotlin/enums/EnumsTest.kt | 51 ------------------- .../test/kotlin/signatures/SignatureTest.kt | 4 +- 6 files changed, 3 insertions(+), 93 deletions(-) diff --git a/core/api/core.api b/core/api/core.api index 8add4bd8d9..aee4a96efb 100644 --- a/core/api/core.api +++ b/core/api/core.api @@ -858,24 +858,6 @@ public final class org/jetbrains/dokka/model/CompositeSourceSetIDKt { public static final fun plus (Lorg/jetbrains/dokka/DokkaSourceSetID;Lorg/jetbrains/dokka/DokkaSourceSetID;)Lorg/jetbrains/dokka/model/CompositeSourceSetID; } -public final class org/jetbrains/dokka/model/ConstructorValues : org/jetbrains/dokka/model/properties/ExtraProperty { - public static final field Companion Lorg/jetbrains/dokka/model/ConstructorValues$Companion; - public fun (Ljava/util/Map;)V - public final fun component1 ()Ljava/util/Map; - public final fun copy (Ljava/util/Map;)Lorg/jetbrains/dokka/model/ConstructorValues; - public static synthetic fun copy$default (Lorg/jetbrains/dokka/model/ConstructorValues;Ljava/util/Map;ILjava/lang/Object;)Lorg/jetbrains/dokka/model/ConstructorValues; - public fun equals (Ljava/lang/Object;)Z - public fun getKey ()Lorg/jetbrains/dokka/model/properties/ExtraProperty$Key; - public final fun getValues ()Ljava/util/Map; - public fun hashCode ()I - public fun toString ()Ljava/lang/String; -} - -public final class org/jetbrains/dokka/model/ConstructorValues$Companion : org/jetbrains/dokka/model/properties/ExtraProperty$Key { - public synthetic fun mergeStrategyFor (Ljava/lang/Object;Ljava/lang/Object;)Lorg/jetbrains/dokka/model/properties/MergeStrategy; - public fun mergeStrategyFor (Lorg/jetbrains/dokka/model/ConstructorValues;Lorg/jetbrains/dokka/model/ConstructorValues;)Lorg/jetbrains/dokka/model/properties/MergeStrategy$Replace; -} - public final class org/jetbrains/dokka/model/Contravariance : org/jetbrains/dokka/model/Variance { public fun (Lorg/jetbrains/dokka/model/Bound;)V public final fun component1 ()Lorg/jetbrains/dokka/model/Bound; diff --git a/core/src/main/kotlin/model/additionalExtras.kt b/core/src/main/kotlin/model/additionalExtras.kt index d708d137c8..9b98448ea9 100644 --- a/core/src/main/kotlin/model/additionalExtras.kt +++ b/core/src/main/kotlin/model/additionalExtras.kt @@ -115,12 +115,3 @@ data class ActualTypealias(val underlyingType: SourceSetDependent) : Extr override val key: ExtraProperty.Key = ActualTypealias } - -data class ConstructorValues(val values: SourceSetDependent>) : ExtraProperty { - companion object : ExtraProperty.Key { - override fun mergeStrategyFor(left: ConstructorValues, right: ConstructorValues) = - MergeStrategy.Replace(ConstructorValues(left.values + right.values)) - } - - override val key: ExtraProperty.Key = ConstructorValues -} diff --git a/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt b/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt index 642c01c3b8..294c1d2462 100644 --- a/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt +++ b/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt @@ -78,17 +78,6 @@ class KotlinSignatureProvider(ctcc: CommentsToContentConverter, logger: DokkaLog group(styles = setOf(TextStyle.Block)) { annotationsBlock(e) link(e.name, e.dri, styles = emptySet()) - e.extra[ConstructorValues]?.let { constructorValues -> - constructorValues.values[it]?.let { values -> - list( - elements = values, - prefix = "(", - suffix = ")", - separator = ", ", - separatorStyles = mainStyles + TokenStyle.Punctuation, - ) { highlightValue(it) } - } - } } } } diff --git a/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt b/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt index 85ec1d07ff..fa0a5b4875 100644 --- a/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt +++ b/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt @@ -321,8 +321,7 @@ private class DokkaDescriptorVisitor( expectPresentInSet = sourceSet.takeIf { isExpect }, extra = PropertyContainer.withAll( descriptor.additionalExtras().toSourceSetDependent().toAdditionalModifiers(), - descriptor.getAnnotations().toSourceSetDependent().toAnnotations(), - ConstructorValues(descriptor.getAppliedConstructorParameters().toSourceSetDependent()) + descriptor.getAnnotations().toSourceSetDependent().toAnnotations() ) ) } diff --git a/plugins/base/src/test/kotlin/enums/EnumsTest.kt b/plugins/base/src/test/kotlin/enums/EnumsTest.kt index ee4de696ce..8cb9f65499 100644 --- a/plugins/base/src/test/kotlin/enums/EnumsTest.kt +++ b/plugins/base/src/test/kotlin/enums/EnumsTest.kt @@ -276,52 +276,6 @@ class EnumsTest : BaseAbstractTest() { } } - @Test - fun enumWithConstructor() { - val configuration = dokkaConfiguration { - sourceSets { - sourceSet { - sourceRoots = listOf("src/") - } - } - } - - testInline( - """ - |/src/main/kotlin/basic/TestEnum.kt - |package testpackage - | - | - |enum class TestEnum(name: String, index: Int, excluded: Boolean) { - | E1("e1", 1, true), - | E2("e2", 2, false); - |} - """.trimMargin(), - configuration - ) { - documentablesTransformationStage = { m -> - m.packages.let { p -> - p.first().classlikes.let { c -> - val enum = c.first() as DEnum - val (first, second) = enum.entries.sortedBy { it.name } - - assertEquals(1, first.extra.allOfType().size) - assertEquals(1, second.extra.allOfType().size) - assertEquals(listOf(StringConstant("e1"), IntegerConstant(1), BooleanConstant(true)), first.extra.allOfType().first().values.values.first()) - assertEquals(listOf(StringConstant("e2"), IntegerConstant(2), BooleanConstant(false)), second.extra.allOfType().first().values.values.first()) - } - } - } - pagesGenerationStage = { module -> - val entryPage = module.dfs { it.name == "E1" } as ClasslikePageNode - val signaturePart = (entryPage.content.dfs { - it is ContentGroup && it.dci.toString() == "[testpackage/TestEnum.E1///PointingToDeclaration/{\"org.jetbrains.dokka.links.EnumEntryDRIExtra\":{\"key\":\"org.jetbrains.dokka.links.EnumEntryDRIExtra\"}}][Symbol]" - } as ContentGroup) - assertEquals("(\"e1\", 1, true)", signaturePart.constructorSignature()) - } - } - } - @Test fun enumWithMethods() { val configuration = dokkaConfiguration { @@ -356,8 +310,6 @@ class EnumsTest : BaseAbstractTest() { val enum = c.first { it is DEnum } as DEnum val first = enum.entries.first() - assertEquals(1, first.extra.allOfType().size) - assertEquals(emptyList(), first.extra.allOfType().first().values.values.first()) assertNotNull(first.functions.find { it.name == "toBeImplemented" }) } } @@ -414,7 +366,4 @@ class EnumsTest : BaseAbstractTest() { } } } - - private fun ContentGroup.constructorSignature(): String = - (children.single() as ContentGroup).children.drop(1).joinToString(separator = "") { (it as ContentText).text } } diff --git a/plugins/base/src/test/kotlin/signatures/SignatureTest.kt b/plugins/base/src/test/kotlin/signatures/SignatureTest.kt index 3895eeded4..d25f291996 100644 --- a/plugins/base/src/test/kotlin/signatures/SignatureTest.kt +++ b/plugins/base/src/test/kotlin/signatures/SignatureTest.kt @@ -876,7 +876,7 @@ class SignatureTest : BaseAbstractTest() { } @Test - fun `should have no empty parentheses for no-arg enum entry`() { + fun `should have no empty parentheses for enum entries`() { val writerPlugin = TestOutputWriterPlugin() testInline( @@ -905,7 +905,7 @@ class SignatureTest : BaseAbstractTest() { ) enumEntrySignatures[1].match( - A("WITH_ARG"), "(\"arg\")", + A("WITH_ARG"), ignoreSpanWithTokenStyle = true ) } From 500a78f31f15fa6a90097b574af5b2d95af57d52 Mon Sep 17 00:00:00 2001 From: Ebrahim Byagowi Date: Fri, 13 May 2022 14:41:44 +0430 Subject: [PATCH 2/2] Update the test name according to the review --- plugins/base/src/test/kotlin/signatures/SignatureTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/base/src/test/kotlin/signatures/SignatureTest.kt b/plugins/base/src/test/kotlin/signatures/SignatureTest.kt index d25f291996..2d17b7f8f7 100644 --- a/plugins/base/src/test/kotlin/signatures/SignatureTest.kt +++ b/plugins/base/src/test/kotlin/signatures/SignatureTest.kt @@ -876,7 +876,7 @@ class SignatureTest : BaseAbstractTest() { } @Test - fun `should have no empty parentheses for enum entries`() { + fun `should not expose enum constructor entry arguments`() { val writerPlugin = TestOutputWriterPlugin() testInline(