From b64579c6d444a39882ceeef08bdc3eedb584e827 Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Wed, 2 Nov 2016 19:50:04 +0300 Subject: Added test and post-review fix --- core/src/main/kotlin/Kotlin/DocumentationBuilder.kt | 3 +-- core/src/test/kotlin/model/LinkTest.kt | 19 ++++++++++++++++++- core/testdata/links/linkToPackage.kt | 8 ++++++++ 3 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 core/testdata/links/linkToPackage.kt diff --git a/core/src/main/kotlin/Kotlin/DocumentationBuilder.kt b/core/src/main/kotlin/Kotlin/DocumentationBuilder.kt index f09c1fc0..ecb6edf2 100644 --- a/core/src/main/kotlin/Kotlin/DocumentationBuilder.kt +++ b/core/src/main/kotlin/Kotlin/DocumentationBuilder.kt @@ -732,12 +732,11 @@ fun CallableMemberDescriptor.getExtensionClassDescriptor(): ClassifierDescriptor } fun DeclarationDescriptor.signature(): String = when(this) { - is ClassDescriptor, is PackageFragmentDescriptor -> DescriptorUtils.getFqName(this).asString() + is ClassDescriptor, is PackageFragmentDescriptor, is PackageViewDescriptor -> DescriptorUtils.getFqName(this).asString() is PropertyDescriptor -> containingDeclaration.signature() + "$" + name + receiverSignature() is FunctionDescriptor -> containingDeclaration.signature() + "$" + name + parameterSignature() is ValueParameterDescriptor -> containingDeclaration.signature() + "/" + name is TypeParameterDescriptor -> containingDeclaration.signature() + "*" + name - is PackageViewDescriptor -> fqName.toString() else -> throw UnsupportedOperationException("Don't know how to calculate signature for $this") } diff --git a/core/src/test/kotlin/model/LinkTest.kt b/core/src/test/kotlin/model/LinkTest.kt index 1c206467..6b72525f 100644 --- a/core/src/test/kotlin/model/LinkTest.kt +++ b/core/src/test/kotlin/model/LinkTest.kt @@ -1,8 +1,10 @@ package org.jetbrains.dokka.tests +import org.jetbrains.dokka.ContentBlock +import org.jetbrains.dokka.ContentNodeLazyLink import org.jetbrains.dokka.NodeKind -import org.junit.Test import org.junit.Assert.assertEquals +import org.junit.Test class LinkTest { @Test fun linkToSelf() { @@ -55,4 +57,19 @@ class LinkTest { } } + @Test fun linkToPackage() { + verifyModel("testdata/links/linkToPackage.kt") { model -> + val packageNode = model.members.single() + with(packageNode) { + assertEquals(this.name, "test.magic") + } + with(packageNode.members.single()) { + assertEquals("Magic", name) + assertEquals(NodeKind.Class, kind) + assertEquals("Basic implementations of [Magic -> Class:Magic] are located in [test.magic -> Package:test.magic] package", content.summary.toTestString()) + assertEquals(packageNode, ((this.content.summary as ContentBlock).children.filterIsInstance().last()).lazyNode.invoke()) + } + } + } + } \ No newline at end of file diff --git a/core/testdata/links/linkToPackage.kt b/core/testdata/links/linkToPackage.kt new file mode 100644 index 00000000..3dd86628 --- /dev/null +++ b/core/testdata/links/linkToPackage.kt @@ -0,0 +1,8 @@ +package test.magic + +/** + * Basic implementations of [Magic] are located in [test.magic] package + */ +abstract class Magic { + +} -- cgit