From 71a30b0c5eaa2044f2a0098ab788fc8c6bf093f4 Mon Sep 17 00:00:00 2001 From: Tianyu Geng Date: Thu, 5 May 2022 01:42:36 +0000 Subject: [PATCH] [Analysis API] Move KDocReference to kotlin repo. --- .../references/Fe10KDocReference.kt | 24 +++++++++++++++++++ ...tFe10KotlinReferenceProviderContributor.kt | 1 + .../base/KtFe10ReferenceResolutionHelper.kt | 3 +++ .../kotlin/idea/references/KDocReference.kt | 2 -- 4 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/Fe10KDocReference.kt diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/Fe10KDocReference.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/Fe10KDocReference.kt new file mode 100644 index 00000000000..04f19bce26e --- /dev/null +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/Fe10KDocReference.kt @@ -0,0 +1,24 @@ +/* + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.analysis.api.descriptors.references + +import org.jetbrains.kotlin.analysis.api.descriptors.references.base.KtFe10Reference +import org.jetbrains.kotlin.analysis.api.descriptors.references.base.KtFe10ReferenceResolutionHelper +import org.jetbrains.kotlin.descriptors.DeclarationDescriptor +import org.jetbrains.kotlin.idea.references.KDocReference +import org.jetbrains.kotlin.kdoc.psi.impl.KDocName +import org.jetbrains.kotlin.psi.KtImportAlias +import org.jetbrains.kotlin.resolve.BindingContext + +class Fe10KDocReference(element: KDocName) : KDocReference(element), KtFe10Reference { + + override fun getTargetDescriptors(context: BindingContext): Collection = + KtFe10ReferenceResolutionHelper.getInstance().resolveKDocLink(element) + + override fun isReferenceToImportAlias(alias: KtImportAlias): Boolean { + return super.isReferenceToImportAlias(alias) + } +} \ No newline at end of file diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/base/KtFe10KotlinReferenceProviderContributor.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/base/KtFe10KotlinReferenceProviderContributor.kt index e5f5175a1f5..1339eadf71d 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/base/KtFe10KotlinReferenceProviderContributor.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/base/KtFe10KotlinReferenceProviderContributor.kt @@ -20,6 +20,7 @@ class KtFe10KotlinReferenceProviderContributor : KotlinReferenceProviderContribu registerProvider(factory = ::KtFe10ArrayAccessReference) registerProvider(factory = ::KtFe10ConstructorDelegationReference) registerProvider(factory = ::KtFe10CollectionLiteralReference) + registerProvider(factory = ::Fe10KDocReference) } } } \ No newline at end of file diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/base/KtFe10ReferenceResolutionHelper.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/base/KtFe10ReferenceResolutionHelper.kt index 14358208e07..f232b421ca0 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/base/KtFe10ReferenceResolutionHelper.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/base/KtFe10ReferenceResolutionHelper.kt @@ -10,6 +10,7 @@ import com.intellij.openapi.project.Project import com.intellij.psi.PsiElement import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.descriptors.DeclarationDescriptor +import org.jetbrains.kotlin.kdoc.psi.impl.KDocName import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.KtDeclaration import org.jetbrains.kotlin.psi.KtElement @@ -34,6 +35,8 @@ interface KtFe10ReferenceResolutionHelper { fun findPsiDeclarations(declaration: DeclarationDescriptor, project: Project, resolveScope: GlobalSearchScope): Collection + fun resolveKDocLink(element: KDocName): Collection + companion object { fun getInstance() = ApplicationManager.getApplication().getService(KtFe10ReferenceResolutionHelper::class.java) } diff --git a/analysis/kt-references/src/org/jetbrains/kotlin/idea/references/KDocReference.kt b/analysis/kt-references/src/org/jetbrains/kotlin/idea/references/KDocReference.kt index 1d4f4ef5463..c3448cfd998 100644 --- a/analysis/kt-references/src/org/jetbrains/kotlin/idea/references/KDocReference.kt +++ b/analysis/kt-references/src/org/jetbrains/kotlin/idea/references/KDocReference.kt @@ -17,8 +17,6 @@ abstract class KDocReference(element: KDocName) : KtMultiReference(ele override fun resolve(): PsiElement? = multiResolve(false).firstOrNull()?.element - abstract override fun handleElementRename(newElementName: String): PsiElement? - override fun getCanonicalText(): String = element.getNameText() override val resolvesByNames: Collection get() = listOf(Name.identifier(element.getNameText()))