diff options
author | Filip Zybała <fzybala@virtuslab.com> | 2020-03-20 15:27:30 +0100 |
---|---|---|
committer | Paweł Marks <Kordyjan@users.noreply.github.com> | 2020-03-26 12:36:03 +0100 |
commit | 8a87b5e0bd2eda12f4e44512e3f8856c72e53b3e (patch) | |
tree | 75b10c56bd933e2cfdcf0c32492ce9d6b61b1533 | |
parent | 8ef04b5d6bb46a5fbd9cea9b8d08048bc9f03879 (diff) | |
download | dokka-8a87b5e0bd2eda12f4e44512e3f8856c72e53b3e.tar.gz dokka-8a87b5e0bd2eda12f4e44512e3f8856c72e53b3e.tar.bz2 dokka-8a87b5e0bd2eda12f4e44512e3f8856c72e53b3e.zip |
Changed modifier to PlatformDependent
7 files changed, 38 insertions, 29 deletions
diff --git a/core/src/main/kotlin/model/Documentable.kt b/core/src/main/kotlin/model/Documentable.kt index 6215be18..00a26d90 100644 --- a/core/src/main/kotlin/model/Documentable.kt +++ b/core/src/main/kotlin/model/Documentable.kt @@ -63,7 +63,7 @@ interface WithType { } interface WithAbstraction { - val modifier: Modifier + val modifier: PlatformDependent<Modifier> } sealed class Modifier(val name: String) @@ -146,7 +146,7 @@ data class DClass( override val generics: List<DTypeParameter>, override val supertypes: PlatformDependent<List<DRI>>, override val documentation: PlatformDependent<DocumentationNode>, - override val modifier: Modifier, + override val modifier: PlatformDependent<Modifier>, override val platformData: List<PlatformData>, override val extra: PropertyContainer<DClass> = PropertyContainer.empty() ) : DClasslike(), WithAbstraction, WithCompanion, WithConstructors, WithGenerics, WithSupertypes, @@ -207,7 +207,7 @@ data class DFunction( override val type: Bound, override val generics: List<DTypeParameter>, override val receiver: DParameter?, - override val modifier: Modifier, + override val modifier: PlatformDependent<Modifier>, override val platformData: List<PlatformData>, override val extra: PropertyContainer<DFunction> = PropertyContainer.empty() ) : Documentable(), Callable, WithGenerics, WithExtraProperties<DFunction> { @@ -287,7 +287,7 @@ data class DProperty( override val receiver: DParameter?, val setter: DFunction?, val getter: DFunction?, - override val modifier: Modifier, + override val modifier: PlatformDependent<Modifier>, override val platformData: List<PlatformData>, override val extra: PropertyContainer<DProperty> = PropertyContainer.empty() ) : Documentable(), Callable, WithExtraProperties<DProperty> { diff --git a/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt b/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt index c40c5b7c..d87152d5 100644 --- a/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt +++ b/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt @@ -34,10 +34,9 @@ class KotlinSignatureProvider(ctcc: CommentsToContentConverter, logger: DokkaLog private fun signature(c: DClasslike) = contentBuilder.contentFor(c, ContentKind.Symbol, setOf(TextStyle.Monospace)) { platformText(c.visibility) { (it.takeIf { it !in ignoredVisibilities }?.name ?: "") + " " } if (c is DClass) { - if (c.extra[AdditionalModifiers]?.content?.contains(ExtraModifiers.DATA) == true) { - text("data ") - } else { - text(c.modifier.name + " ") + platformText(c.modifier){ + if (c.extra[AdditionalModifiers]?.content?.contains(ExtraModifiers.DATA) == true && it.name == "final") "data " + else it.name + " " } } when (c) { @@ -72,7 +71,7 @@ class KotlinSignatureProvider(ctcc: CommentsToContentConverter, logger: DokkaLog private fun signature(f: DFunction) = contentBuilder.contentFor(f, ContentKind.Symbol, setOf(TextStyle.Monospace)) { platformText(f.visibility) { (it.takeIf { it !in ignoredVisibilities }?.name ?: "") + " " } - text(f.modifier.name + " ") + platformText(f.modifier) { it.name } text("fun ") list(f.generics, prefix = "<", suffix = "> ") { +buildSignature(it) diff --git a/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt b/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt index ccee7269..bed6c25c 100644 --- a/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt +++ b/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt @@ -233,7 +233,8 @@ private class DokkaDescriptorVisitor( // TODO: close this class and make it priv else PlatformDependent.from(platformData,info.supertypes), generics = descriptor.typeConstructor.parameters.map { it.toTypeParameter() }, documentation = info.docs, - modifier = descriptor.modifier(), + modifier = if(isExpect) PlatformDependent.expectFrom(descriptor.modifier()) + else PlatformDependent.from(platformData, descriptor.modifier()), companion = descriptor.companion(driWithPlatform), platformData = listOf(platformData), extra = PropertyContainer.withAll(descriptor.additionalExtras(), descriptor.getAnnotations()) @@ -261,7 +262,8 @@ private class DokkaDescriptorVisitor( // TODO: close this class and make it priv visibility = if(isExpect) PlatformDependent.expectFrom(descriptor.visibility.toDokkaVisibility()) else PlatformDependent.from(platformData,descriptor.visibility.toDokkaVisibility()), documentation = descriptor.resolveDescriptorData(if (!isExpect) platformData else null), - modifier = descriptor.modifier(), + modifier = if(isExpect) PlatformDependent.expectFrom(descriptor.modifier()) + else PlatformDependent.from(platformData, descriptor.modifier()), type = descriptor.returnType!!.toBound(), platformData = listOf(platformData), extra = PropertyContainer.withAll(descriptor.additionalExtras(), descriptor.getAnnotations()) @@ -288,7 +290,8 @@ private class DokkaDescriptorVisitor( // TODO: close this class and make it priv else PlatformDependent.from(platformData,descriptor.visibility.toDokkaVisibility()), generics = descriptor.typeParameters.map { it.toTypeParameter() }, documentation = descriptor.resolveDescriptorData(if (!isExpect) platformData else null), - modifier = descriptor.modifier(), + modifier = if(isExpect) PlatformDependent.expectFrom(descriptor.modifier()) + else PlatformDependent.from(platformData, descriptor.modifier()), type = descriptor.returnType!!.toBound(), platformData = listOf(platformData), extra = PropertyContainer.withAll(descriptor.additionalExtras(), descriptor.getAnnotations()) @@ -315,7 +318,8 @@ private class DokkaDescriptorVisitor( // TODO: close this class and make it priv else PlatformDependent.from(platformData,descriptor.visibility.toDokkaVisibility()), documentation = descriptor.resolveDescriptorData(if (!isExpect) platformData else null), type = descriptor.returnType.toBound(), - modifier = descriptor.modifier(), + modifier = if(isExpect) PlatformDependent.expectFrom(descriptor.modifier()) + else PlatformDependent.from(platformData, descriptor.modifier()), generics = descriptor.typeParameters.map { it.toTypeParameter() }, platformData = listOf(platformData), extra = PropertyContainer.withAll<DFunction>(descriptor.additionalExtras(), descriptor.getAnnotations()).let { @@ -377,7 +381,8 @@ private class DokkaDescriptorVisitor( // TODO: close this class and make it priv documentation = descriptor.resolveDescriptorData(if (!isExpect) platformData else null), type = descriptor.returnType!!.toBound(), generics = descriptor.typeParameters.map { it.toTypeParameter() }, - modifier = descriptor.modifier(), + modifier = if(isExpect) PlatformDependent.expectFrom(descriptor.modifier()) + else PlatformDependent.from(platformData, descriptor.modifier()), receiver = descriptor.extensionReceiverParameter?.let { visitReceiverParameterDescriptor( it, diff --git a/plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt b/plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt index 3f3ebe3a..b9e02398 100644 --- a/plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt +++ b/plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt @@ -166,6 +166,7 @@ open class DefaultPageCreator( protected open fun contentForFunction(f: DFunction) = contentBuilder.contentFor(f) { header(1) { text(f.name) } platformDependentHint(f.dri, f.platformData.toSet()){ + if(f.sources.expect != null) text("actual") +buildSignature(f) +contentForComments(f) } diff --git a/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt b/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt index 218f8c82..ee862fb8 100644 --- a/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt +++ b/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt @@ -122,6 +122,7 @@ object DefaultPsiToDocumentableTranslator : PsiToDocumentableTranslator { val classlikes = innerClasses.map { parseClasslike(it, dri) } val visibility = getVisibility().toPlatformDependant() val ancestors = ancestorsSet.toList().toPlatformDependant() + val modifiers = getModifier().toPlatformDependant() return when { isAnnotationType -> DAnnotation( @@ -193,7 +194,7 @@ object DefaultPsiToDocumentableTranslator : PsiToDocumentableTranslator { mapTypeParameters(dri), ancestors, documentation, - getModifier(), + modifiers, listOf(platformData), PropertyContainer.empty<DClass>() + annotations.toList().toExtra() ) @@ -226,7 +227,7 @@ object DefaultPsiToDocumentableTranslator : PsiToDocumentableTranslator { psi.returnType?.let { getBound(type = it) } ?: Void, psi.mapTypeParameters(dri), null, - psi.getModifier(), + psi.getModifier().toPlatformDependant(), listOf(platformData), PropertyContainer.withAll( InheritedFunction(isInherited), @@ -339,7 +340,7 @@ object DefaultPsiToDocumentableTranslator : PsiToDocumentableTranslator { null, accessors.firstOrNull { it.hasParameters() }?.let { parseFunction(it, parent) }, accessors.firstOrNull { it.returnType == psi.type }?.let { parseFunction(it, parent) }, - psi.getModifier(), + psi.getModifier().toPlatformDependant(), listOf(platformData), PropertyContainer.empty<DProperty>() + psi.annotations.toList().toExtra() ) 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 6de3f121..dac937c0 100644 --- a/plugins/kotlin-as-java/src/main/kotlin/converters/KotlinToJavaConverter.kt +++ b/plugins/kotlin-as-java/src/main/kotlin/converters/KotlinToJavaConverter.kt @@ -47,7 +47,7 @@ internal fun DPackage.asJava(): DPackage { generics = emptyList(), supertypes = PlatformDependent.empty(), documentation = PlatformDependent.empty(), - modifier = JavaModifier.Final, + modifier = PlatformDependent(map = platformData.map{ it to JavaModifier.Final}.toMap()), platformData = platformData, extra = PropertyContainer.empty() ) @@ -68,9 +68,9 @@ internal fun DProperty.asJava(isTopLevel: Boolean = false, relocateToClass: Stri dri.withClass(relocateToClass) }, modifier = if (setter == null) { - JavaModifier.Final + PlatformDependent(map = platformData.map{it to JavaModifier.Final}.toMap()) } else { - JavaModifier.Empty + PlatformDependent(map = platformData.map{it to JavaModifier.Empty}.toMap()) }, visibility = visibility.copy( map = visibility.mapValues { JavaVisibility.Private } @@ -91,9 +91,9 @@ internal fun DProperty.javaAccessors(isTopLevel: Boolean = false, relocateToClas }, name = "get" + name.capitalize(), modifier = if (setter == null) { - JavaModifier.Final + PlatformDependent(map = platformData.map{it to JavaModifier.Final}.toMap()) } else { - JavaModifier.Empty + PlatformDependent(map = platformData.map{it to JavaModifier.Empty}.toMap()) }, visibility = visibility.copy( map = visibility.mapValues { JavaVisibility.Public } @@ -109,9 +109,9 @@ internal fun DProperty.javaAccessors(isTopLevel: Boolean = false, relocateToClas }, name = "set" + name.capitalize(), modifier = if (setter == null) { - JavaModifier.Final + PlatformDependent(map = platformData.map{it to JavaModifier.Final}.toMap()) } else { - JavaModifier.Empty + PlatformDependent(map = platformData.map{it to JavaModifier.Empty}.toMap()) }, visibility = visibility.copy( map = visibility.mapValues { JavaVisibility.Public } @@ -131,7 +131,9 @@ internal fun DFunction.asJava(containingClassName: String): DFunction { // dri = dri.copy(callable = dri.callable?.asJava()), name = newName, type = type.asJava(), - modifier = if(modifier is KotlinModifier.Final && isConstructor) JavaModifier.Empty else modifier, + modifier = if(modifier.all{(_,v)-> v is KotlinModifier.Final} && isConstructor) + PlatformDependent(map = platformData.map{it to JavaModifier.Empty}.toMap()) + else PlatformDependent(map = platformData.map{it to modifier.allValues.first()}.toMap()), parameters = listOfNotNull(receiver?.asJava()) + parameters.map { it.asJava() }, receiver = null ) // TODO static if toplevel @@ -157,7 +159,8 @@ internal fun DClass.asJava(): DClass = copy( supertypes = supertypes.copy( map = supertypes.mapValues { it.value.map { it.possiblyAsJava() } } ), - modifier = if (modifier is KotlinModifier.Empty) JavaModifier.Final else modifier + modifier = if (modifier.all{(_,v) -> v is KotlinModifier.Empty}) PlatformDependent(map = platformData.map{it to JavaModifier.Final}.toMap()) + else PlatformDependent(map = platformData.map{it to modifier.allValues.first()}.toMap()) ) private fun DTypeParameter.asJava(): DTypeParameter = copy( @@ -195,7 +198,7 @@ internal fun DObject.asJava(): DObject = copy( properties = properties.map { it.asJava() } + DProperty( name = "INSTANCE", - modifier = JavaModifier.Final, + modifier = PlatformDependent(map = platformData.map{it to JavaModifier.Final}.toMap()), dri = dri.copy(callable = Callable("INSTANCE", null, emptyList())), documentation = PlatformDependent.empty(), sources = PlatformDependent.empty(), diff --git a/plugins/kotlin-as-java/src/main/kotlin/signatures/JavaSignatureProvider.kt b/plugins/kotlin-as-java/src/main/kotlin/signatures/JavaSignatureProvider.kt index 6a571660..54bf663d 100644 --- a/plugins/kotlin-as-java/src/main/kotlin/signatures/JavaSignatureProvider.kt +++ b/plugins/kotlin-as-java/src/main/kotlin/signatures/JavaSignatureProvider.kt @@ -33,7 +33,7 @@ class JavaSignatureProvider(ctcc: CommentsToContentConverter, logger: DokkaLogge platformText(c.visibility) { (it.takeIf { it !in ignoredVisibilities }?.name ?: "") + " " } if (c is DClass) { - text(c.modifier.takeIf { it !in ignoredModifiers }?.name.orEmpty() + " ") + platformText(c.modifier){ it.takeIf{it !in ignoredModifiers}?.name.orEmpty() + " "} } when (c) { @@ -63,7 +63,7 @@ class JavaSignatureProvider(ctcc: CommentsToContentConverter, logger: DokkaLogge } private fun signature(f: DFunction) = contentBuilder.contentFor(f, ContentKind.Symbol, setOf(TextStyle.Monospace)) { - text(f.modifier.takeIf { it !in ignoredModifiers }?.name.orEmpty() + " ") + platformText(f.modifier){ it.takeIf{it !in ignoredModifiers}?.name.orEmpty() + " "} val returnType = f.type signatureForProjection(returnType) text(" ") |