Skip to content

Commit

Permalink
Make a default value dependent on source set
Browse files Browse the repository at this point in the history
  • Loading branch information
vmishenev committed Apr 18, 2022
1 parent 2a0ed52 commit f8fb423
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 15 deletions.
6 changes: 4 additions & 2 deletions core/src/main/kotlin/model/defaultValues.kt
Expand Up @@ -3,9 +3,11 @@ package org.jetbrains.dokka.model
import org.jetbrains.dokka.model.properties.ExtraProperty
import org.jetbrains.dokka.model.properties.MergeStrategy

class DefaultValue(val value: Expression): ExtraProperty<Documentable> {
class DefaultValue(val value: SourceSetDependent<Expression>): ExtraProperty<Documentable> {
companion object : ExtraProperty.Key<Documentable, DefaultValue> {
override fun mergeStrategyFor(left: DefaultValue, right: DefaultValue): MergeStrategy<Documentable> = MergeStrategy.Remove // TODO pass a logger somehow and log this
override fun mergeStrategyFor(left: DefaultValue, right: DefaultValue): MergeStrategy<Documentable> =
MergeStrategy.Replace(DefaultValue(left.value + right.value))

}

override val key: ExtraProperty.Key<Documentable, *>
Expand Down
17 changes: 10 additions & 7 deletions plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt
Expand Up @@ -13,7 +13,10 @@ import org.jetbrains.dokka.model.*
import org.jetbrains.dokka.model.Nullable
import org.jetbrains.dokka.model.TypeConstructor
import org.jetbrains.dokka.model.properties.WithExtraProperties
import org.jetbrains.dokka.pages.*
import org.jetbrains.dokka.pages.ContentKind
import org.jetbrains.dokka.pages.ContentNode
import org.jetbrains.dokka.pages.TextStyle
import org.jetbrains.dokka.pages.TokenStyle
import org.jetbrains.dokka.plugability.DokkaContext
import org.jetbrains.dokka.plugability.plugin
import org.jetbrains.dokka.plugability.querySingle
Expand Down Expand Up @@ -197,9 +200,9 @@ class KotlinSignatureProvider(ctcc: CommentsToContentConverter, logger: DokkaLog
text(param.name.orEmpty())
operator(": ")
signatureForProjection(param.type)
param.extra[DefaultValue]?.let {
param.extra[DefaultValue]?.value?.get(sourceSet)?.let { expr ->
operator(" = ")
highlightValue(it.value)
highlightValue(expr)
}
}
punctuation(")")
Expand Down Expand Up @@ -256,9 +259,9 @@ class KotlinSignatureProvider(ctcc: CommentsToContentConverter, logger: DokkaLog
link(p.name, p.dri)
operator(": ")
signatureForProjection(p.type)
p.extra[DefaultValue]?.run {
p.extra[DefaultValue]?.value?.get(it)?.let { expr ->
operator(" = ")
highlightValue(value)
highlightValue(expr)
}
}
}
Expand Down Expand Up @@ -312,9 +315,9 @@ class KotlinSignatureProvider(ctcc: CommentsToContentConverter, logger: DokkaLog
text(param.name!!)
operator(": ")
signatureForProjection(param.type)
param.extra[DefaultValue]?.run {
param.extra[DefaultValue]?.value?.get(it)?.let { expr ->
operator(" = ")
highlightValue(value)
highlightValue(expr)
}
}
}
Expand Down
Expand Up @@ -14,11 +14,9 @@ import org.jetbrains.dokka.analysis.from
import org.jetbrains.dokka.base.DokkaBase
import org.jetbrains.dokka.base.parsers.MarkdownParser
import org.jetbrains.dokka.base.translators.psi.parsers.JavadocParser
import org.jetbrains.dokka.base.translators.psi.DefaultPsiToDocumentableTranslator
import org.jetbrains.dokka.base.translators.typeConstructorsBeingExceptions
import org.jetbrains.dokka.base.translators.unquotedValue
import org.jetbrains.dokka.links.*
import org.jetbrains.dokka.links.Callable
import org.jetbrains.dokka.model.*
import org.jetbrains.dokka.model.AnnotationTarget
import org.jetbrains.dokka.model.Nullable
Expand Down Expand Up @@ -467,7 +465,7 @@ private class DokkaDescriptorVisitor(
.toAdditionalExtras()).toSet().toSourceSetDependent().toAdditionalModifiers(),
(descriptor.getAnnotationsWithBackingField() + descriptor.fileLevelAnnotations()).toSourceSetDependent()
.toAnnotations(),
descriptor.getDefaultValue()?.let { DefaultValue(it) },
descriptor.getDefaultValue()?.let { DefaultValue(it.toSourceSetDependent()) },
InheritedMember(inheritedFrom.toSourceSetDependent()),
)
)
Expand Down Expand Up @@ -712,7 +710,7 @@ private class DokkaDescriptorVisitor(
extra = PropertyContainer.withAll(listOfNotNull(
descriptor.additionalExtras().toSourceSetDependent().toAdditionalModifiers(),
descriptor.getAnnotations().toSourceSetDependent().toAnnotations(),
descriptor.getDefaultValue()?.let { DefaultValue(it) }
descriptor.getDefaultValue()?.let { DefaultValue(it.toSourceSetDependent()) }
))
)

Expand Down
4 changes: 2 additions & 2 deletions plugins/base/src/test/kotlin/model/FunctionsTest.kt
Expand Up @@ -344,7 +344,7 @@ class FunctionTest : AbstractModelTest("/src/main/kotlin/function/Test.kt", "fun
parameters.forEach { p ->
p.name equals "x"
p.type.name.assertNotNull("Parameter type: ") equals "String"
p.extra[DefaultValue]?.value equals StringConstant("")
p.extra[DefaultValue]?.value?.get(sourceSets.single()) equals StringConstant("")
}
}
}
Expand All @@ -363,7 +363,7 @@ class FunctionTest : AbstractModelTest("/src/main/kotlin/function/Test.kt", "fun
parameters.forEach { p ->
p.name equals "x"
p.type.name.assertNotNull("Parameter type: ") equals "Float"
p.extra[DefaultValue]?.value equals FloatConstant(3.14f)
p.extra[DefaultValue]?.value?.get(sourceSets.single()) equals FloatConstant(3.14f)
}
}
}
Expand Down

0 comments on commit f8fb423

Please sign in to comment.