[FIR] Add separate session component for FirIdeProvider
This commit is contained in:
+9
-1
@@ -34,10 +34,18 @@ class FirIdeJavaModuleBasedSession(
|
|||||||
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
val firIdeProvider = FirIdeProvider(project, scope, this, KotlinScopeProvider(::wrapScopeWithJvmMapped))
|
||||||
|
|
||||||
registerComponent(
|
registerComponent(
|
||||||
FirProvider::class,
|
FirProvider::class,
|
||||||
FirIdeProvider(project, scope, this, KotlinScopeProvider(::wrapScopeWithJvmMapped))
|
firIdeProvider
|
||||||
)
|
)
|
||||||
|
|
||||||
|
registerComponent(
|
||||||
|
FirIdeProvider::class,
|
||||||
|
firIdeProvider
|
||||||
|
)
|
||||||
|
|
||||||
registerComponent(
|
registerComponent(
|
||||||
FirSymbolProvider::class,
|
FirSymbolProvider::class,
|
||||||
FirCompositeSymbolProvider(
|
FirCompositeSymbolProvider(
|
||||||
|
|||||||
@@ -150,4 +150,6 @@ class FirIdeProvider(
|
|||||||
getFirClassifierByFqName(classId)
|
getFirClassifierByFqName(classId)
|
||||||
return cacheProvider.getNestedClassifierScope(classId)
|
return cacheProvider.getNestedClassifierScope(classId)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val FirSession.firIdeProvider: FirIdeProvider by FirSession.sessionComponentAccessor()
|
||||||
@@ -81,7 +81,7 @@ fun KtCallableDeclaration.getOrBuildFir(
|
|||||||
val klassFqName = this.containingClassOrObject?.relativeFqName()
|
val klassFqName = this.containingClassOrObject?.relativeFqName()
|
||||||
val declName = this.nameAsSafeName
|
val declName = this.nameAsSafeName
|
||||||
|
|
||||||
val firProvider = session.firProvider as FirIdeProvider
|
val firProvider = session.firIdeProvider
|
||||||
val firFile = firProvider.getOrBuildFile(file)
|
val firFile = firProvider.getOrBuildFile(file)
|
||||||
val firMemberSymbol = firFile.findCallableMember(firProvider, this, packageFqName, klassFqName, declName).symbol
|
val firMemberSymbol = firFile.findCallableMember(firProvider, this, packageFqName, klassFqName, declName).symbol
|
||||||
val firMemberDeclaration = firMemberSymbol.fir
|
val firMemberDeclaration = firMemberSymbol.fir
|
||||||
@@ -104,7 +104,7 @@ fun KtClassOrObject.getOrBuildFir(
|
|||||||
val packageFqName = file.packageFqName
|
val packageFqName = file.packageFqName
|
||||||
val klassFqName = this.relativeFqName()
|
val klassFqName = this.relativeFqName()
|
||||||
|
|
||||||
val firProvider = session.firProvider as FirIdeProvider
|
val firProvider = session.firIdeProvider
|
||||||
val firFile = firProvider.getOrBuildFile(file)
|
val firFile = firProvider.getOrBuildFile(file)
|
||||||
|
|
||||||
val firClassOrEnumEntry = if (this is KtEnumEntry) {
|
val firClassOrEnumEntry = if (this is KtEnumEntry) {
|
||||||
@@ -124,7 +124,7 @@ fun KtClassOrObject.getOrBuildFir(
|
|||||||
|
|
||||||
private fun KtFile.getOrBuildRawFirFile(state: FirModuleResolveState): Pair<FirIdeProvider, FirFile> {
|
private fun KtFile.getOrBuildRawFirFile(state: FirModuleResolveState): Pair<FirIdeProvider, FirFile> {
|
||||||
val session = state.getSession(this)
|
val session = state.getSession(this)
|
||||||
val firProvider = session.firProvider as FirIdeProvider
|
val firProvider = session.firIdeProvider
|
||||||
return firProvider to firProvider.getOrBuildFile(this)
|
return firProvider to firProvider.getOrBuildFile(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ abstract class AbstractFirLazyResolveTest : KotlinLightCodeInsightFixtureTestCas
|
|||||||
for (file in files) {
|
for (file in files) {
|
||||||
val psiFile = psiManager.findFile(file) as KtFile
|
val psiFile = psiManager.findFile(file) as KtFile
|
||||||
val session = resolveState.getSession(psiFile)
|
val session = resolveState.getSession(psiFile)
|
||||||
val firProvider = session.firProvider as FirIdeProvider
|
val firProvider = session.firIdeProvider
|
||||||
val firFile = firProvider.getFile(psiFile) ?: continue
|
val firFile = firProvider.getFile(psiFile) ?: continue
|
||||||
KotlinTestUtils.assertEqualsToFile(File(expectedTxtPath(file)), firFile.render())
|
KotlinTestUtils.assertEqualsToFile(File(expectedTxtPath(file)), firFile.render())
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user