aboutsummaryrefslogtreecommitdiff
path: root/plugins/base/src/main/kotlin/signatures
diff options
context:
space:
mode:
authorIgnat Beresnev <ignat.beresnev@jetbrains.com>2023-08-31 20:16:01 +0200
committerGitHub <noreply@github.com>2023-08-31 20:16:01 +0200
commit02f30b142aa467d3a24cc52a1fe3f2fed7ea1e33 (patch)
tree66f6d6f089a93b863bf1144666491eca6729ad05 /plugins/base/src/main/kotlin/signatures
parent6a181a7a2b03ec263788d137610e86937a57d434 (diff)
downloaddokka-02f30b142aa467d3a24cc52a1fe3f2fed7ea1e33.tar.gz
dokka-02f30b142aa467d3a24cc52a1fe3f2fed7ea1e33.tar.bz2
dokka-02f30b142aa467d3a24cc52a1fe3f2fed7ea1e33.zip
Enable explicit API mode (#3139)
Diffstat (limited to 'plugins/base/src/main/kotlin/signatures')
-rw-r--r--plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt53
-rw-r--r--plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt9
-rw-r--r--plugins/base/src/main/kotlin/signatures/KotlinSignatureUtils.kt20
-rw-r--r--plugins/base/src/main/kotlin/signatures/SignatureProvider.kt4
4 files changed, 49 insertions, 37 deletions
diff --git a/plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt b/plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt
index f46b5100..e5f85803 100644
--- a/plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt
+++ b/plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt
@@ -13,35 +13,39 @@ import org.jetbrains.dokka.model.AnnotationTarget
import org.jetbrains.dokka.model.properties.WithExtraProperties
import org.jetbrains.dokka.pages.*
-interface JvmSignatureUtils {
+public interface JvmSignatureUtils {
- fun PageContentBuilder.DocumentableContentBuilder.annotationsBlock(d: AnnotationTarget)
+ public fun PageContentBuilder.DocumentableContentBuilder.annotationsBlock(d: AnnotationTarget)
- fun PageContentBuilder.DocumentableContentBuilder.annotationsInline(d: AnnotationTarget)
+ public fun PageContentBuilder.DocumentableContentBuilder.annotationsInline(d: AnnotationTarget)
- fun <T : Documentable> WithExtraProperties<T>.modifiers(): SourceSetDependent<Set<ExtraModifiers>>
+ public fun <T : Documentable> WithExtraProperties<T>.modifiers(): SourceSetDependent<Set<ExtraModifiers>>
- fun Collection<ExtraModifiers>.toSignatureString(): String =
+ public fun Collection<ExtraModifiers>.toSignatureString(): String =
joinToString("") { it.name.toLowerCase() + " " }
@Suppress("UNCHECKED_CAST")
- fun Documentable.annotations() = (this as? WithExtraProperties<Documentable>)?.annotations() ?: emptyMap()
+ public fun Documentable.annotations(): Map<DokkaSourceSet, List<Annotations.Annotation>> {
+ return (this as? WithExtraProperties<Documentable>)?.annotations() ?: emptyMap()
+ }
- fun <T : AnnotationTarget> WithExtraProperties<T>.annotations(): SourceSetDependent<List<Annotations.Annotation>> =
+ public fun <T : AnnotationTarget> WithExtraProperties<T>.annotations(): SourceSetDependent<List<Annotations.Annotation>> =
extra[Annotations]?.directAnnotations ?: emptyMap()
@Suppress("UNCHECKED_CAST")
- operator fun <T : Iterable<*>> SourceSetDependent<T>.plus(other: SourceSetDependent<T>): SourceSetDependent<T> =
- LinkedHashMap(this).apply {
+ public operator fun <T : Iterable<*>> SourceSetDependent<T>.plus(other: SourceSetDependent<T>): SourceSetDependent<T> {
+ return LinkedHashMap(this).apply {
for ((k, v) in other) {
put(k, get(k).let { if (it != null) (it + v) as T else v })
}
}
+ }
- fun DProperty.annotations(): SourceSetDependent<List<Annotations.Annotation>> =
- (extra[Annotations]?.directAnnotations ?: emptyMap()) +
- (getter?.annotations() ?: emptyMap()).mapValues { it.value.map { it.copy( scope = Annotations.AnnotationScope.GETTER) } } +
- (setter?.annotations() ?: emptyMap()).mapValues { it.value.map { it.copy( scope = Annotations.AnnotationScope.SETTER) } }
+ public fun DProperty.annotations(): SourceSetDependent<List<Annotations.Annotation>> {
+ return (extra[Annotations]?.directAnnotations ?: emptyMap()) +
+ (getter?.annotations() ?: emptyMap()).mapValues { it.value.map { it.copy( scope = Annotations.AnnotationScope.GETTER) } } +
+ (setter?.annotations() ?: emptyMap()).mapValues { it.value.map { it.copy( scope = Annotations.AnnotationScope.SETTER) } }
+ }
private fun PageContentBuilder.DocumentableContentBuilder.annotations(
d: AnnotationTarget,
@@ -77,7 +81,7 @@ interface JvmSignatureUtils {
}
} ?: Unit
- fun PageContentBuilder.DocumentableContentBuilder.toSignatureString(
+ public fun PageContentBuilder.DocumentableContentBuilder.toSignatureString(
a: Annotations.Annotation,
renderAtStrategy: AtStrategy,
listBrackets: Pair<Char, Char>,
@@ -143,7 +147,7 @@ interface JvmSignatureUtils {
listBrackets?.let{ punctuation(it.second.toString()) }
}
- fun PageContentBuilder.DocumentableContentBuilder.annotationsBlockWithIgnored(
+ public fun PageContentBuilder.DocumentableContentBuilder.annotationsBlockWithIgnored(
d: AnnotationTarget,
ignored: Set<Annotations.Annotation>,
renderAtStrategy: AtStrategy,
@@ -157,7 +161,7 @@ interface JvmSignatureUtils {
}
}
- fun PageContentBuilder.DocumentableContentBuilder.annotationsInlineWithIgnored(
+ public fun PageContentBuilder.DocumentableContentBuilder.annotationsInlineWithIgnored(
d: AnnotationTarget,
ignored: Set<Annotations.Annotation>,
renderAtStrategy: AtStrategy,
@@ -170,7 +174,7 @@ interface JvmSignatureUtils {
}
}
- fun <T : Documentable> WithExtraProperties<T>.stylesIfDeprecated(sourceSetData: DokkaSourceSet): Set<TextStyle> {
+ public fun <T : Documentable> WithExtraProperties<T>.stylesIfDeprecated(sourceSetData: DokkaSourceSet): Set<TextStyle> {
val directAnnotations = extra[Annotations]?.directAnnotations?.get(sourceSetData) ?: emptyList()
val hasAnyDeprecatedAnnotation =
directAnnotations.any { it.dri == DRI("kotlin", "Deprecated") || it.dri == DRI("java.lang", "Deprecated") }
@@ -178,7 +182,7 @@ interface JvmSignatureUtils {
return if (hasAnyDeprecatedAnnotation) setOf(TextStyle.Strikethrough) else emptySet()
}
- infix fun DFunction.uses(typeParameter: DTypeParameter): Boolean {
+ public infix fun DFunction.uses(typeParameter: DTypeParameter): Boolean {
val parameterDris = parameters.flatMap { listOf(it.dri) + it.type.drisOfAllNestedBounds }
val receiverDris =
listOfNotNull(
@@ -203,8 +207,9 @@ interface JvmSignatureUtils {
* ```
* Wrapping and indentation of parameters is applied conditionally, see [shouldWrapParams]
*/
- fun PageContentBuilder.DocumentableContentBuilder.parametersBlock(
- function: DFunction, paramBuilder: PageContentBuilder.DocumentableContentBuilder.(DParameter) -> Unit
+ public fun PageContentBuilder.DocumentableContentBuilder.parametersBlock(
+ function: DFunction,
+ paramBuilder: PageContentBuilder.DocumentableContentBuilder.(DParameter) -> Unit
) {
group(kind = SymbolContentKind.Parameters, styles = emptySet()) {
function.parameters.dropLast(1).forEach {
@@ -220,7 +225,7 @@ interface JvmSignatureUtils {
}
}
-sealed class AtStrategy
-object All : AtStrategy()
-object OnlyOnce : AtStrategy()
-object Never : AtStrategy()
+public sealed class AtStrategy
+public object All : AtStrategy()
+public object OnlyOnce : AtStrategy()
+public object Never : AtStrategy()
diff --git a/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt b/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt
index 9294240e..2180e776 100644
--- a/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt
+++ b/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt
@@ -23,13 +23,16 @@ import org.jetbrains.dokka.plugability.querySingle
import org.jetbrains.dokka.utilities.DokkaLogger
import kotlin.text.Typography.nbsp
-class KotlinSignatureProvider(ctcc: CommentsToContentConverter, logger: DokkaLogger)
- : SignatureProvider, JvmSignatureUtils by KotlinSignatureUtils {
+public class KotlinSignatureProvider(
+ ctcc: CommentsToContentConverter,
+ logger: DokkaLogger
+) : SignatureProvider, JvmSignatureUtils by KotlinSignatureUtils {
- constructor(context: DokkaContext) : this(
+ public constructor(context: DokkaContext) : this(
context.plugin<DokkaBase>().querySingle { commentsToContentConverter },
context.logger,
)
+
private val contentBuilder = PageContentBuilder(ctcc, this, logger)
private val ignoredVisibilities = setOf(JavaVisibility.Public, KotlinVisibility.Public)
diff --git a/plugins/base/src/main/kotlin/signatures/KotlinSignatureUtils.kt b/plugins/base/src/main/kotlin/signatures/KotlinSignatureUtils.kt
index 7999c22e..f16fbeb0 100644
--- a/plugins/base/src/main/kotlin/signatures/KotlinSignatureUtils.kt
+++ b/plugins/base/src/main/kotlin/signatures/KotlinSignatureUtils.kt
@@ -4,6 +4,7 @@
package org.jetbrains.dokka.base.signatures
+import org.jetbrains.dokka.DokkaConfiguration
import org.jetbrains.dokka.base.transformers.pages.annotations.SinceKotlinTransformer
import org.jetbrains.dokka.base.translators.documentables.PageContentBuilder
import org.jetbrains.dokka.links.DRI
@@ -14,7 +15,7 @@ import org.jetbrains.dokka.model.AnnotationTarget
import org.jetbrains.dokka.model.properties.WithExtraProperties
import org.jetbrains.dokka.pages.ContentKind
-object KotlinSignatureUtils : JvmSignatureUtils {
+public object KotlinSignatureUtils : JvmSignatureUtils {
private const val classExtension = "::class"
private val strategy = OnlyOnce
@@ -34,21 +35,24 @@ object KotlinSignatureUtils : JvmSignatureUtils {
)
- override fun PageContentBuilder.DocumentableContentBuilder.annotationsBlock(d: AnnotationTarget) =
+ override fun PageContentBuilder.DocumentableContentBuilder.annotationsBlock(d: AnnotationTarget) {
annotationsBlockWithIgnored(d, ignoredAnnotations, strategy, listBrackets, classExtension)
+ }
- override fun PageContentBuilder.DocumentableContentBuilder.annotationsInline(d: AnnotationTarget) =
+ override fun PageContentBuilder.DocumentableContentBuilder.annotationsInline(d: AnnotationTarget) {
annotationsInlineWithIgnored(d, ignoredAnnotations, strategy, listBrackets, classExtension)
+ }
- override fun <T : Documentable> WithExtraProperties<T>.modifiers() =
- extra[AdditionalModifiers]?.content?.entries?.associate {
+ override fun <T : Documentable> WithExtraProperties<T>.modifiers(): SourceSetDependent<Set<ExtraModifiers>> {
+ return extra[AdditionalModifiers]?.content?.entries?.associate {
it.key to it.value.filterIsInstance<ExtraModifiers.KotlinOnlyModifiers>().toSet()
} ?: emptyMap()
+ }
- val PrimitiveJavaType.dri: DRI get() = DRI("kotlin", name.capitalize())
+ public val PrimitiveJavaType.dri: DRI get() = DRI("kotlin", name.capitalize())
- val Bound.driOrNull: DRI?
+ public val Bound.driOrNull: DRI?
get() {
return when (this) {
is TypeParameter -> dri
@@ -64,7 +68,7 @@ object KotlinSignatureUtils : JvmSignatureUtils {
}
}
- val Projection.drisOfAllNestedBounds: List<DRI> get() = when (this) {
+ public val Projection.drisOfAllNestedBounds: List<DRI> get() = when (this) {
is TypeParameter -> listOf(dri)
is TypeConstructor -> listOf(dri) + projections.flatMap { it.drisOfAllNestedBounds }
is Nullable -> inner.drisOfAllNestedBounds
diff --git a/plugins/base/src/main/kotlin/signatures/SignatureProvider.kt b/plugins/base/src/main/kotlin/signatures/SignatureProvider.kt
index b0b81ea8..76245a40 100644
--- a/plugins/base/src/main/kotlin/signatures/SignatureProvider.kt
+++ b/plugins/base/src/main/kotlin/signatures/SignatureProvider.kt
@@ -7,6 +7,6 @@ package org.jetbrains.dokka.base.signatures
import org.jetbrains.dokka.model.Documentable
import org.jetbrains.dokka.pages.ContentNode
-fun interface SignatureProvider {
- fun signature(documentable: Documentable): List<ContentNode>
+public fun interface SignatureProvider {
+ public fun signature(documentable: Documentable): List<ContentNode>
}