From 372e9c796cc77aaff788df56a13deeef64b6edd7 Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Wed, 18 Jan 2017 16:48:03 +0300 Subject: KT-15497 Dokka: Using of not-FQ name in @sample should be allowed --- core/src/main/kotlin/Kotlin/DescriptorDocumentationParser.kt | 2 +- .../main/kotlin/Samples/DefaultSampleProcessingService.kt | 12 ++++++------ core/src/main/kotlin/Samples/SampleProcessingService.kt | 3 ++- 3 files changed, 9 insertions(+), 8 deletions(-) (limited to 'core/src/main/kotlin') diff --git a/core/src/main/kotlin/Kotlin/DescriptorDocumentationParser.kt b/core/src/main/kotlin/Kotlin/DescriptorDocumentationParser.kt index d1f64eeb..14d04397 100644 --- a/core/src/main/kotlin/Kotlin/DescriptorDocumentationParser.kt +++ b/core/src/main/kotlin/Kotlin/DescriptorDocumentationParser.kt @@ -59,7 +59,7 @@ class DescriptorDocumentationParser tags.forEach { when (it.knownTag) { KDocKnownTag.SAMPLE -> - content.append(sampleService.resolveSample(descriptor, it.getSubjectName())) + content.append(sampleService.resolveSample(descriptor, it.getSubjectName(), it)) KDocKnownTag.SEE -> content.addTagToSeeAlso(descriptor, it) else -> { diff --git a/core/src/main/kotlin/Samples/DefaultSampleProcessingService.kt b/core/src/main/kotlin/Samples/DefaultSampleProcessingService.kt index e6539135..6348c181 100644 --- a/core/src/main/kotlin/Samples/DefaultSampleProcessingService.kt +++ b/core/src/main/kotlin/Samples/DefaultSampleProcessingService.kt @@ -7,11 +7,13 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.PackageViewDescriptor import org.jetbrains.kotlin.idea.kdoc.getKDocLinkResolutionScope -import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.idea.kdoc.resolveKDocLink +import org.jetbrains.kotlin.kdoc.psi.impl.KDocTag import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.KtBlockExpression import org.jetbrains.kotlin.psi.KtDeclarationWithBody import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter import org.jetbrains.kotlin.resolve.scopes.ResolutionScope @@ -23,15 +25,13 @@ open class DefaultSampleProcessingService val resolutionFacade: DokkaResolutionFacade) : SampleProcessingService { - override fun resolveSample(descriptor: DeclarationDescriptor, functionName: String?): ContentNode { + override fun resolveSample(descriptor: DeclarationDescriptor, functionName: String?, kdocTag: KDocTag): ContentNode { if (functionName == null) { logger.warn("Missing function name in @sample in ${descriptor.signature()}") return ContentBlockSampleCode().apply { append(ContentText("//Missing function name in @sample")) } } - val scope = getKDocLinkResolutionScope(resolutionFacade, descriptor) - val rootPackage = resolutionFacade.moduleDescriptor.getPackage(FqName.ROOT) - val rootScope = rootPackage.memberScope - val symbol = resolveInScope(functionName, scope) ?: resolveInScope(functionName, rootScope) + val bindingContext = BindingContext.EMPTY + val symbol = resolveKDocLink(bindingContext, resolutionFacade, descriptor, kdocTag, functionName.split(".")).firstOrNull() if (symbol == null) { logger.warn("Unresolved function $functionName in @sample in ${descriptor.signature()}") return ContentBlockSampleCode().apply { append(ContentText("//Unresolved: $functionName")) } diff --git a/core/src/main/kotlin/Samples/SampleProcessingService.kt b/core/src/main/kotlin/Samples/SampleProcessingService.kt index 7f46299f..86c917cf 100644 --- a/core/src/main/kotlin/Samples/SampleProcessingService.kt +++ b/core/src/main/kotlin/Samples/SampleProcessingService.kt @@ -2,7 +2,8 @@ package org.jetbrains.dokka.Samples import org.jetbrains.dokka.ContentNode import org.jetbrains.kotlin.descriptors.DeclarationDescriptor +import org.jetbrains.kotlin.kdoc.psi.impl.KDocTag interface SampleProcessingService { - fun resolveSample(descriptor: DeclarationDescriptor, functionName: String?): ContentNode + fun resolveSample(descriptor: DeclarationDescriptor, functionName: String?, kdocTag: KDocTag): ContentNode } \ No newline at end of file -- cgit