[AA] Add KtResolveExtensionInfoProvider to AA.

This provider is responsible for answering queries related to resolve
extensions. At the moment, this includes retrieving a KtScope with all REx
top-level declarations (moved from KtSymbolFromResolveExtensionProvider), and
retrieving information necessary to supply a GeneratedSourcesFilter for REx
generated code. Future REx-related functions can be added to this interface.

^KT-59329
This commit is contained in:
Justin Paupore
2023-06-14 23:57:38 -07:00
committed by Ilya Kirillov
parent fa0209a322
commit 9f85739599
24 changed files with 1133 additions and 81 deletions
@@ -69,7 +69,7 @@ class KtFe10AnalysisSession(
override val scopeSubstitutionImpl: KtScopeSubstitution = KtFe10ScopeSubstitution(this)
override val substitutorFactoryImpl: KtSubstitutorFactory = KtFe10SubstitutorFactory(this)
override val symbolProviderByJavaPsiImpl: KtSymbolProviderByJavaPsi = KtFe10SymbolProviderByJavaPsi(this)
override val resolveExtensionProviderImpl: KtSymbolFromResolveExtensionProvider = KtFe10SymbolFromResolveExtensionProvider(this)
override val resolveExtensionInfoProviderImpl: KtResolveExtensionInfoProvider = KtFe10ResolveExtensionInfoProvider(this)
override fun createContextDependentCopy(originalKtFile: KtFile, elementToReanalyze: KtElement): KtAnalysisSession =
withValidityAssertion {
@@ -5,21 +5,28 @@
package org.jetbrains.kotlin.analysis.api.descriptors.components
import org.jetbrains.kotlin.analysis.api.components.KtSymbolFromResolveExtensionProvider
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.components.KtResolveExtensionInfoProvider
import org.jetbrains.kotlin.analysis.api.descriptors.KtFe10AnalysisSession
import org.jetbrains.kotlin.analysis.api.descriptors.components.base.Fe10KtAnalysisSessionComponent
import org.jetbrains.kotlin.analysis.api.impl.base.scopes.KtEmptyScope
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.scopes.KtScope
import org.jetbrains.kotlin.psi.KtElement
internal class KtFe10SymbolFromResolveExtensionProvider(
// Resolve extensions are not supported on FE1.0, so return empty results.
internal class KtFe10ResolveExtensionInfoProvider(
override val analysisSession: KtFe10AnalysisSession,
) : KtSymbolFromResolveExtensionProvider(), Fe10KtAnalysisSessionComponent {
) : KtResolveExtensionInfoProvider(), Fe10KtAnalysisSessionComponent {
override val token: KtLifetimeToken
get() = analysisSession.token
override fun getResolveExtensionScopeWithTopLevelDeclarations(): KtScope {
// Not supported for FE1.0
return KtEmptyScope(token)
}
override fun isResolveExtensionFile(file: VirtualFile): Boolean = false
override fun getResolveExtensionNavigationElements(originalPsi: KtElement): Collection<PsiElement> = emptyList()
}