diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/FirIdeJavaModuleBasedSession.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/FirIdeJavaModuleBasedSession.kt index f23357a3301..ca08c53e3c5 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/FirIdeJavaModuleBasedSession.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/FirIdeJavaModuleBasedSession.kt @@ -34,10 +34,18 @@ class FirIdeJavaModuleBasedSession( init { + val firIdeProvider = FirIdeProvider(project, scope, this, KotlinScopeProvider(::wrapScopeWithJvmMapped)) + registerComponent( FirProvider::class, - FirIdeProvider(project, scope, this, KotlinScopeProvider(::wrapScopeWithJvmMapped)) + firIdeProvider ) + + registerComponent( + FirIdeProvider::class, + firIdeProvider + ) + registerComponent( FirSymbolProvider::class, FirCompositeSymbolProvider( diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/FirIdeProvider.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/FirIdeProvider.kt index 7700751a818..9bb27fd3c50 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/FirIdeProvider.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/FirIdeProvider.kt @@ -150,4 +150,6 @@ class FirIdeProvider( getFirClassifierByFqName(classId) return cacheProvider.getNestedClassifierScope(classId) } -} \ No newline at end of file +} + +val FirSession.firIdeProvider: FirIdeProvider by FirSession.sessionComponentAccessor() \ No newline at end of file diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/FirResolutionApi.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/FirResolutionApi.kt index 9ffb1de97d1..763e481c190 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/FirResolutionApi.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/FirResolutionApi.kt @@ -81,7 +81,7 @@ fun KtCallableDeclaration.getOrBuildFir( val klassFqName = this.containingClassOrObject?.relativeFqName() val declName = this.nameAsSafeName - val firProvider = session.firProvider as FirIdeProvider + val firProvider = session.firIdeProvider val firFile = firProvider.getOrBuildFile(file) val firMemberSymbol = firFile.findCallableMember(firProvider, this, packageFqName, klassFqName, declName).symbol val firMemberDeclaration = firMemberSymbol.fir @@ -104,7 +104,7 @@ fun KtClassOrObject.getOrBuildFir( val packageFqName = file.packageFqName val klassFqName = this.relativeFqName() - val firProvider = session.firProvider as FirIdeProvider + val firProvider = session.firIdeProvider val firFile = firProvider.getOrBuildFile(file) val firClassOrEnumEntry = if (this is KtEnumEntry) { @@ -124,7 +124,7 @@ fun KtClassOrObject.getOrBuildFir( private fun KtFile.getOrBuildRawFirFile(state: FirModuleResolveState): Pair { val session = state.getSession(this) - val firProvider = session.firProvider as FirIdeProvider + val firProvider = session.firIdeProvider return firProvider to firProvider.getOrBuildFile(this) } diff --git a/idea/idea-fir/tests/org/jetbrains/kotlin/idea/fir/AbstractFirLazyResolveTest.kt b/idea/idea-fir/tests/org/jetbrains/kotlin/idea/fir/AbstractFirLazyResolveTest.kt index a542b26d8cf..118d597031a 100644 --- a/idea/idea-fir/tests/org/jetbrains/kotlin/idea/fir/AbstractFirLazyResolveTest.kt +++ b/idea/idea-fir/tests/org/jetbrains/kotlin/idea/fir/AbstractFirLazyResolveTest.kt @@ -102,7 +102,7 @@ abstract class AbstractFirLazyResolveTest : KotlinLightCodeInsightFixtureTestCas for (file in files) { val psiFile = psiManager.findFile(file) as KtFile val session = resolveState.getSession(psiFile) - val firProvider = session.firProvider as FirIdeProvider + val firProvider = session.firIdeProvider val firFile = firProvider.getFile(psiFile) ?: continue KotlinTestUtils.assertEqualsToFile(File(expectedTxtPath(file)), firFile.render()) }