From bda677d2ad34260305b067d04eb9b9370cfaed54 Mon Sep 17 00:00:00 2001 From: Roman Golyshev Date: Thu, 2 Nov 2023 13:57:59 +0100 Subject: [PATCH] KT-63096 [LL] Use full module resolution scope to create `KotlinAnnotationsResolver` `KotlinAnnotationsResolver` must see everything that is resolvable from the current module; otherwise it will not work properly. The previous scope was the module itself + its binary dependencies (jars). Now the scope will contain the module itself and ALL its dependencies, including other modules. ^KT-63096 Fixed --- .../level/api/fir/project/structure/sessionFactoryHelpers.kt | 5 ++--- .../level/api/fir/sessions/LLFirAbstractSessionFactory.kt | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/project/structure/sessionFactoryHelpers.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/project/structure/sessionFactoryHelpers.kt index 98790620ca8..a39dbabfd3a 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/project/structure/sessionFactoryHelpers.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/project/structure/sessionFactoryHelpers.kt @@ -21,7 +21,7 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSourcesSess import org.jetbrains.kotlin.analysis.low.level.api.fir.util.LLFirExceptionHandler import org.jetbrains.kotlin.analysis.project.structure.KtCompilerPluginsProvider import org.jetbrains.kotlin.analysis.project.structure.KtSourceModule -import org.jetbrains.kotlin.analysis.project.structure.moduleScopeProvider +import org.jetbrains.kotlin.analysis.providers.KotlinResolutionScopeProvider import org.jetbrains.kotlin.analysis.providers.createAnnotationResolver import org.jetbrains.kotlin.analysis.providers.createDeclarationProvider import org.jetbrains.kotlin.fir.FirExceptionHandler @@ -76,11 +76,10 @@ internal fun FirSession.registerCompilerPluginExtensions(project: Project, modul @SessionConfiguration internal fun LLFirSourcesSession.registerCompilerPluginServices( - contentScope: GlobalSearchScope, project: Project, module: KtSourceModule ) { - val projectWithDependenciesScope = contentScope.uniteWith(project.moduleScopeProvider.getModuleLibrariesScope(module)) + val projectWithDependenciesScope = KotlinResolutionScopeProvider.getInstance(project).getResolutionScope(module) val annotationsResolver = project.createAnnotationResolver(projectWithDependenciesScope) // We need FirRegisteredPluginAnnotations and FirPredicateBasedProvider during extensions' registration process diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirAbstractSessionFactory.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirAbstractSessionFactory.kt index fe93e859c74..c794d8819f8 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirAbstractSessionFactory.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirAbstractSessionFactory.kt @@ -281,7 +281,7 @@ internal abstract class LLFirAbstractSessionFactory(protected val project: Proje register(FirProvider::class, firProvider) register(FirLazyDeclarationResolver::class, LLFirLazyDeclarationResolver()) - registerCompilerPluginServices(firProvider.searchScope, project, module) + registerCompilerPluginServices(project, module) registerCompilerPluginExtensions(project, module) registerCommonComponentsAfterExtensionsAreConfigured()