FIR IDE: fix memory leak in scope provider

This commit is contained in:
Ilya Kirillov
2020-10-27 17:58:53 +03:00
parent 64895fe7da
commit 559b07d78a
@@ -40,12 +40,13 @@ import java.util.*
internal class KtFirScopeProvider( internal class KtFirScopeProvider(
analysisSession: KtAnalysisSession, analysisSession: KtAnalysisSession,
private val builder: KtSymbolByFirBuilder, builder: KtSymbolByFirBuilder,
private val project: Project, private val project: Project,
firResolveState: FirModuleResolveState, firResolveState: FirModuleResolveState,
override val token: ValidityToken, override val token: ValidityToken,
) : KtScopeProvider(), ValidityTokenOwner { ) : KtScopeProvider(), ValidityTokenOwner {
override val analysisSession: KtAnalysisSession by weakRef(analysisSession) override val analysisSession: KtAnalysisSession by weakRef(analysisSession)
private val builder by weakRef(builder)
private val firResolveState by weakRef(firResolveState) private val firResolveState by weakRef(firResolveState)
private val firScopeStorage = FirScopeRegistry() private val firScopeStorage = FirScopeRegistry()
@@ -133,13 +134,13 @@ internal class KtFirScopeProvider(
} }
private fun buildCompletionContextForEnclosingDeclaration( private fun buildCompletionContextForEnclosingDeclaration(
originalFile: KtFile, ktFile: KtFile,
positionInFakeFile: KtElement positionInFakeFile: KtElement
): LowLevelFirApiFacadeForCompletion.FirCompletionContext { ): LowLevelFirApiFacadeForCompletion.FirCompletionContext {
val originalFirFile = LowLevelFirApiFacade.getFirFile(originalFile, firResolveState) val firFile = LowLevelFirApiFacade.getFirFile(ktFile, firResolveState)
val declarationContext = EnclosingDeclarationContext.detect(originalFile, positionInFakeFile) val declarationContext = EnclosingDeclarationContext.detect(positionInFakeFile)
return declarationContext.buildCompletionContext(originalFirFile, firResolveState) return declarationContext.buildCompletionContext(firFile, firResolveState)
} }
private fun convertToKtScope(firScope: FirScope): KtScope { private fun convertToKtScope(firScope: FirScope): KtScope {