FIR: Cache file importing scopes

This commit is contained in:
Denis Zharkov
2020-01-27 18:15:36 +03:00
parent 0b2b23189a
commit 280fb94774
@@ -19,11 +19,22 @@ fun MutableList<FirScope>.addImportingScopes(file: FirFile, session: FirSession,
private object FirDefaultStarImportingScopeKey : 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(
file: FirFile,
session: FirSession,
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> {
return listOf(
// from low priority to high priority