[LL FIR] cache import scopes during compiler required annotations phase

In LL FIR file is always already resolved to import phase, so we can
cache the result

^KT-56551
This commit is contained in:
Dmitrii Gridin
2023-05-18 14:57:45 +02:00
committed by Space Team
parent dabc4e34ff
commit 72f30d78d6
3 changed files with 5 additions and 1 deletions
@@ -85,6 +85,8 @@ private class LLFirCompilerRequiredAnnotationsTargetResolver(
resolver.resolveDesignation()
}
override val useCacheForImportScope: Boolean get() = true
}
private val transformer = FirCompilerRequiredAnnotationsResolveTransformer(
@@ -391,7 +391,7 @@ abstract class AbstractFirSpecificAnnotationResolveTransformer(
lateinit var scopes: List<FirScope>
inline fun <T> withFileScopes(file: FirFile, f: () -> T): T {
scopes = createImportingScopes(file, session, scopeSession, useCaching = false)
scopes = createImportingScopes(file, session, scopeSession, useCaching = computationSession.useCacheForImportScope)
return f()
}
@@ -136,6 +136,8 @@ open class CompilerRequiredAnnotationsComputationSession {
return file in filesWithResolvedImports
}
open val useCacheForImportScope: Boolean get() = false
fun recordThatImportsAreResolved(file: FirFile) {
if (!filesWithResolvedImports.add(file)) {
error("Imports are resolved twice")