diff options
author | Andrzej Ratajczak <andrzej.ratajczak98@gmail.com> | 2020-09-09 11:38:55 +0200 |
---|---|---|
committer | Paweł Marks <Kordyjan@users.noreply.github.com> | 2020-09-10 13:11:02 +0200 |
commit | d8a3e7db72109c8f439095a924bdc1da47b6ab6a (patch) | |
tree | 28e541fe952ae42519aabdbd990918673664684d /plugins/base/src | |
parent | f1bc6e87722085363b10d559696d27071e7e1745 (diff) | |
download | dokka-d8a3e7db72109c8f439095a924bdc1da47b6ab6a.tar.gz dokka-d8a3e7db72109c8f439095a924bdc1da47b6ab6a.tar.bz2 dokka-d8a3e7db72109c8f439095a924bdc1da47b6ab6a.zip |
Add TypeAliased bound
Diffstat (limited to 'plugins/base/src')
5 files changed, 18 insertions, 12 deletions
diff --git a/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt b/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt index be9543f4..2a091ff5 100644 --- a/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt +++ b/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt @@ -345,6 +345,8 @@ class KotlinSignatureProvider(ctcc: CommentsToContentConverter, logger: DokkaLog text("?") } + is TypeAliased -> signatureForProjection(p.typeAlias) + is JavaObject -> link("Any", DriOfAny) is Void -> link("Unit", DriOfUnit) is PrimitiveJavaType -> signatureForProjection(p.translateToKotlin(), showFullyQualifiedName) diff --git a/plugins/base/src/main/kotlin/signatures/KotlinSignatureUtils.kt b/plugins/base/src/main/kotlin/signatures/KotlinSignatureUtils.kt index c40c48a2..2266b691 100644 --- a/plugins/base/src/main/kotlin/signatures/KotlinSignatureUtils.kt +++ b/plugins/base/src/main/kotlin/signatures/KotlinSignatureUtils.kt @@ -35,14 +35,15 @@ object KotlinSignatureUtils : JvmSignatureUtils { val Bound.driOrNull: DRI? get() { return when (this) { - is TypeParameter -> this.dri - is TypeConstructor -> this.dri - is Nullable -> this.inner.driOrNull - is PrimitiveJavaType -> this.dri + is TypeParameter -> dri + is TypeConstructor -> dri + is Nullable -> inner.driOrNull + is PrimitiveJavaType -> dri is Void -> DriOfUnit is JavaObject -> DriOfAny is Dynamic -> null is UnresolvedBound -> null + is TypeAliased -> typeAlias.driOrNull } } @@ -57,6 +58,7 @@ object KotlinSignatureUtils : JvmSignatureUtils { is UnresolvedBound -> emptyList() is Variance<*> -> inner.drisOfAllNestedBounds is Star -> emptyList() + is TypeAliased -> listOfNotNull(typeAlias.driOrNull, inner.driOrNull) } } diff --git a/plugins/base/src/main/kotlin/transformers/documentables/ExtensionExtractorTransformer.kt b/plugins/base/src/main/kotlin/transformers/documentables/ExtensionExtractorTransformer.kt index af65c205..2a8baf0b 100644 --- a/plugins/base/src/main/kotlin/transformers/documentables/ExtensionExtractorTransformer.kt +++ b/plugins/base/src/main/kotlin/transformers/documentables/ExtensionExtractorTransformer.kt @@ -9,6 +9,7 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.toList +import org.jetbrains.dokka.base.signatures.KotlinSignatureUtils.driOrNull import org.jetbrains.dokka.links.DRI import org.jetbrains.dokka.links.DriOfAny import org.jetbrains.dokka.model.* @@ -101,6 +102,7 @@ private fun Callable.findReceiverDRIs(bound: Bound): Sequence<DRI> = when (bound is JavaObject -> sequenceOf(DriOfAny) is Dynamic -> sequenceOf(DriOfAny) is UnresolvedBound -> emptySequence() + is TypeAliased -> findReceiverDRIs(bound.typeAlias) } private fun <T, U> Iterable<Pair<T, U>>.toMultiMap(): Map<T, List<U>> = @@ -124,4 +126,4 @@ fun <T : Any> ReceiveChannel<T>.consumeAsFlow(): Flow<T> = flow { } catch (_: ClosedReceiveChannelException) { // cool and good } -}.flowOn(Dispatchers.Default)
\ No newline at end of file +}.flowOn(Dispatchers.Default) diff --git a/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt b/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt index d42acb32..392bba7e 100644 --- a/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt +++ b/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt @@ -631,12 +631,12 @@ private class DokkaDescriptorVisitor( private fun KotlinType.toBound(): Bound = when (this) { is DynamicType -> Dynamic + is AbbreviatedType -> TypeAliased( + abbreviation.toBound(), + expandedType.toBound() + ) else -> { - val ctor = when (this) { - is AbbreviatedType -> abbreviation.constructor.declarationDescriptor - else -> constructor.declarationDescriptor - } - when (ctor) { + when (val ctor = constructor.declarationDescriptor) { is TypeParameterDescriptor -> TypeParameter( dri = DRI.from(ctor), name = ctor.name.asString() diff --git a/plugins/base/src/test/kotlin/signatures/SignatureTest.kt b/plugins/base/src/test/kotlin/signatures/SignatureTest.kt index 7ebc3b4d..df2c3825 100644 --- a/plugins/base/src/test/kotlin/signatures/SignatureTest.kt +++ b/plugins/base/src/test/kotlin/signatures/SignatureTest.kt @@ -442,8 +442,8 @@ class SignatureTest : AbstractCoreTest() { ) { renderingStage = { _, _ -> writerPlugin.writer.renderedContent("root/example.html").signature().first().match( - "typealias ", A("GenericTypealias"), "<", Span("T"), "> = ", A("Comparable"), - "<", Span("T"), ">", Span() + "typealias ", A("GenericTypealias"), "<", A("T"), "> = ", A("Comparable"), + "<", A("T"), ">", Span() ) } } |