[FIR] Don't cache importing scopes while resolving plugin's annotations

This commit is contained in:
Dmitriy Novozhilov
2020-06-03 11:59:30 +03:00
parent 1ffe438fa1
commit 1f80f35ce6
2 changed files with 10 additions and 5 deletions
@@ -30,7 +30,7 @@ internal abstract class FirAbstractAnnotationResolveTransformer<D, S>(
override fun transformFile(file: FirFile, data: D): CompositeTransformResult<FirDeclaration> {
return withScopeCleanup(towerScope.scopes) {
towerScope.addScopes(createImportingScopes(file, session, scopeSession))
towerScope.addScopes(createImportingScopes(file, session, scopeSession, useCaching = false))
val state = beforeChildren(file)
file.transformDeclarations(this, data)
afterChildren(state)
@@ -22,10 +22,15 @@ 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
scopeSession: ScopeSession,
useCaching: Boolean = true
): List<FirScope> = if (useCaching) {
scopeSession.getOrBuild(file, FileImportingScopeKey) {
ListStorageFirScope(doCreateImportingScopes(file, session, scopeSession))
}.result
} else {
doCreateImportingScopes(file, session, scopeSession)
}
private fun doCreateImportingScopes(
file: FirFile,