[Analysis API] add ability for a custom element navigation for a KtResolveExtensionFile

^KT-57930
This commit is contained in:
Ilya Kirillov
2023-04-18 08:35:00 +02:00
committed by Space Team
parent 51eaa3f9cf
commit 0d0b1b7945
5 changed files with 71 additions and 7 deletions
@@ -77,11 +77,11 @@ abstract class KtResolveExtensionFile {
abstract fun buildFileText(): String
/**
* Creates a [KtResolveExtensionReferenceTargetsPsiProvider] for this [KtResolveExtensionFile].
* Creates a [KtResolveExtensionReferencePsiTargetsProvider] for this [KtResolveExtensionFile].
*
* @see KtResolveExtensionReferenceTargetsPsiProvider
* @see KtResolveExtensionReferencePsiTargetsProvider
* @see KtResolveExtensionFile
*/
abstract fun createTargetPsiProvider(): KtResolveExtensionReferenceTargetsPsiProvider
abstract fun createPsiTargetsProvider(): KtResolveExtensionReferencePsiTargetsProvider
}
@@ -0,0 +1,22 @@
/*
* Copyright 2010-2023 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.resolve.extensions
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
abstract class KtResolveExtensionReferencePsiTargetsProvider {
/**
* Provides a [PsiElement] where `reference.resolveTo` will lead for a [symbol]
*
* Usually returns a single result. Might return an empty collection if there is no navigation target.
* Also, might multiple targets in a case of ambiguity or multiple targets for a [symbol]
*
* Returned [PsiElement] will be used as a navigation target for a reference inside the IDE.
*/
abstract fun KtAnalysisSession.getReferenceTargetsForSymbol(symbol: KtSymbol): Collection<PsiElement>
}