diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt | 8 | ||||
-rw-r--r-- | plugins/base/src/test/kotlin/model/FunctionsTest.kt | 37 |
2 files changed, 24 insertions, 21 deletions
diff --git a/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt b/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt index 6d834f9c..ae623ff2 100644 --- a/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt +++ b/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt @@ -19,7 +19,8 @@ import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.descriptors.impl.DeclarationDescriptorVisitorEmptyBodies import org.jetbrains.kotlin.idea.kdoc.findKDoc -import org.jetbrains.kotlin.psi.KtConstantExpression +import org.jetbrains.kotlin.psi.KtExpression +import org.jetbrains.kotlin.psi.psiUtil.findDescendantOfType import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.calls.components.isVararg import org.jetbrains.kotlin.resolve.calls.tasks.isDynamic @@ -531,9 +532,8 @@ private class DokkaDescriptorVisitor( // TODO: close this class and make it priv ) }.let(::Annotations) - fun ValueParameterDescriptor.getDefaultValue(): String? = (source as? KotlinSourceElement)?.let { - it.psi.children.find { it is KtConstantExpression }?.text - } + fun ValueParameterDescriptor.getDefaultValue(): String? = + (source as? KotlinSourceElement)?.psi?.children?.find { it is KtExpression }?.text data class ClassInfo(val supertypes: List<DRI>, val docs: PlatformDependent<DocumentationNode>) diff --git a/plugins/base/src/test/kotlin/model/FunctionsTest.kt b/plugins/base/src/test/kotlin/model/FunctionsTest.kt index 068c2895..e00e51fc 100644 --- a/plugins/base/src/test/kotlin/model/FunctionsTest.kt +++ b/plugins/base/src/test/kotlin/model/FunctionsTest.kt @@ -315,7 +315,7 @@ class FunctionTest : AbstractModelTest("/src/main/kotlin/function/Test.kt", "fun } @Test - fun functionWithDefaultParameter() { + fun functionWithDefaultStringParameter() { inlineModelTest( """ |/src/main/kotlin/function/Test.kt @@ -323,31 +323,34 @@ class FunctionTest : AbstractModelTest("/src/main/kotlin/function/Test.kt", "fun |fun f(x: String = "") {} """ ) { - // TODO add default value data - with((this / "function" / "f").cast<DFunction>()) { parameters.forEach { p -> p.name equals "x" p.type.name.assertNotNull("Parameter type: ") equals "String" - assert(false) { "No default value data" } + p.extra[DefaultValue]?.value equals "\"\"" } } } } -// @Test fun functionWithDefaultParameter() { -// checkSourceExistsAndVerifyModel("testdata/functions/functionWithDefaultParameter.kt", defaultModelConfig) { model -> -// with(model.members.single().members.single()) { -// with(details.elementAt(3)) { -// val value = details(NodeKind.Value) -// assertEquals(1, value.count()) -// with(value[0]) { -// assertEquals("\"\"", name) -// } -// } -// } -// } -// } + @Test + fun functionWithDefaultFloatParameter() { + inlineModelTest( + """ + |/src/main/kotlin/function/Test.kt + |package function + |fun f(x: Float = 3.14f) {} + """ + ) { + with((this / "function" / "f").cast<DFunction>()) { + parameters.forEach { p -> + p.name equals "x" + p.type.name.assertNotNull("Parameter type: ") equals "Float" + p.extra[DefaultValue]?.value equals "3.14f" + } + } + } + } @Test fun sinceKotlin() { |