From c3031ccff5494f92e28eccaa34afb77437c8f153 Mon Sep 17 00:00:00 2001 From: Roman Golyshev Date: Mon, 31 Oct 2022 12:08:06 +0100 Subject: [PATCH] [Analysis API] Use smart pointer to hold onto KtFile in ShortenCommand It's a better approach, considering that we already keep all the PSI element via smart pointers --- .../analysis/api/fir/components/KtFirReferenceShortener.kt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirReferenceShortener.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirReferenceShortener.kt index d13cccb275a..67c70d3efa8 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirReferenceShortener.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirReferenceShortener.kt @@ -95,7 +95,7 @@ internal class KtFirReferenceShortener( firDeclaration.accept(collector) return ShortenCommandImpl( - file, + file.createSmartPointer(), collector.namesToImport.distinct(), collector.namesToImportWithStar.distinct(), collector.typesToShorten.distinct().map { it.createSmartPointer() }, @@ -616,7 +616,7 @@ private class ElementsToShortenCollector( } private class ShortenCommandImpl( - val targetFile: KtFile, + val targetFile: SmartPsiElementPointer, val importsToAdd: List, val starImportsToAdd: List, val typesToShorten: List>, @@ -624,6 +624,9 @@ private class ShortenCommandImpl( ) : ShortenCommand { override fun invokeShortening() { + // if the file has been invalidated, there's nothing we can shorten + val targetFile = targetFile.element ?: return + for (nameToImport in importsToAdd) { addImportToFile(targetFile.project, targetFile, nameToImport) }