From 1f80f35ce6407243c295d60c04c05f677e1a1886 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Wed, 3 Jun 2020 11:59:30 +0300 Subject: [PATCH] [FIR] Don't cache importing scopes while resolving plugin's annotations --- .../FirAbstractAnnotationResolveTransformer.kt | 2 +- .../src/org/jetbrains/kotlin/fir/scopes/Scopes.kt | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/plugin/FirAbstractAnnotationResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/plugin/FirAbstractAnnotationResolveTransformer.kt index ce4200b4a86..9e0ee86c16d 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/plugin/FirAbstractAnnotationResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/plugin/FirAbstractAnnotationResolveTransformer.kt @@ -30,7 +30,7 @@ internal abstract class FirAbstractAnnotationResolveTransformer( override fun transformFile(file: FirFile, data: D): CompositeTransformResult { 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) 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 ac4869ffbfe..26a9da4882f 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 @@ -22,10 +22,15 @@ 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 + scopeSession: ScopeSession, + useCaching: Boolean = true +): List = if (useCaching) { + scopeSession.getOrBuild(file, FileImportingScopeKey) { + ListStorageFirScope(doCreateImportingScopes(file, session, scopeSession)) + }.result +} else { + doCreateImportingScopes(file, session, scopeSession) +} private fun doCreateImportingScopes( file: FirFile,