From 280fb947749eada0a87216d71c765db84e44c9b4 Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Mon, 27 Jan 2020 18:15:36 +0300 Subject: [PATCH] FIR: Cache file importing scopes --- .../src/org/jetbrains/kotlin/fir/scopes/Scopes.kt | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/Scopes.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/Scopes.kt index 3f8495e41a2..6c717affb92 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/Scopes.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/Scopes.kt @@ -19,11 +19,22 @@ fun MutableList.addImportingScopes(file: FirFile, session: FirSession, private object FirDefaultStarImportingScopeKey : ScopeSessionKey() private object FirDefaultSimpleImportingScopeKey : ScopeSessionKey() +private object FileImportingScopeKey : ScopeSessionKey() + +private class ListStorageFirScope(val result: List) : FirScope() fun createImportingScopes( file: FirFile, session: FirSession, scopeSession: ScopeSession +): List = scopeSession.getOrBuild(file, FileImportingScopeKey) { + ListStorageFirScope(doCreateImportingScopes(file, session, scopeSession)) +}.result + +private fun doCreateImportingScopes( + file: FirFile, + session: FirSession, + scopeSession: ScopeSession ): List { return listOf( // from low priority to high priority