FIR: Cache file importing scopes
This commit is contained in:
@@ -19,11 +19,22 @@ fun MutableList<FirScope>.addImportingScopes(file: FirFile, session: FirSession,
|
|||||||
|
|
||||||
private object FirDefaultStarImportingScopeKey : ScopeSessionKey<DefaultImportPriority, FirScope>()
|
private object FirDefaultStarImportingScopeKey : ScopeSessionKey<DefaultImportPriority, FirScope>()
|
||||||
private object FirDefaultSimpleImportingScopeKey : ScopeSessionKey<DefaultImportPriority, FirScope>()
|
private object FirDefaultSimpleImportingScopeKey : ScopeSessionKey<DefaultImportPriority, FirScope>()
|
||||||
|
private object FileImportingScopeKey : ScopeSessionKey<FirFile, ListStorageFirScope>()
|
||||||
|
|
||||||
|
private class ListStorageFirScope(val result: List<FirScope>) : FirScope()
|
||||||
|
|
||||||
fun createImportingScopes(
|
fun createImportingScopes(
|
||||||
file: FirFile,
|
file: FirFile,
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
scopeSession: ScopeSession
|
scopeSession: ScopeSession
|
||||||
|
): List<FirScope> = scopeSession.getOrBuild(file, FileImportingScopeKey) {
|
||||||
|
ListStorageFirScope(doCreateImportingScopes(file, session, scopeSession))
|
||||||
|
}.result
|
||||||
|
|
||||||
|
private fun doCreateImportingScopes(
|
||||||
|
file: FirFile,
|
||||||
|
session: FirSession,
|
||||||
|
scopeSession: ScopeSession
|
||||||
): List<FirScope> {
|
): List<FirScope> {
|
||||||
return listOf(
|
return listOf(
|
||||||
// from low priority to high priority
|
// from low priority to high priority
|
||||||
|
|||||||
Reference in New Issue
Block a user