From 6c3b9fa8f7790bba34dd96e027bbdc3394af496b Mon Sep 17 00:00:00 2001 From: Roman Golyshev Date: Wed, 20 Nov 2024 16:17:45 +0100 Subject: [PATCH] KTIJ-32202 [kotlin] Small cleanup in `OptimizedImportsBuilder` Better naming, get rid of redundant nullable lists early (cherry picked from commit 6cbaaee13a290500d7fbdc7d96fdd2946723cb05) IJ-CR-150012 GitOrigin-RevId: 20c92c10aafd73ee0c65c662f49b51760f358489 --- .../imports/OptimizedImportsBuilder.kt | 23 ++++++++----------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/plugins/kotlin/code-insight/kotlin.code-insight.k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/imports/OptimizedImportsBuilder.kt b/plugins/kotlin/code-insight/kotlin.code-insight.k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/imports/OptimizedImportsBuilder.kt index 764081815896..e739af9ea4bc 100644 --- a/plugins/kotlin/code-insight/kotlin.code-insight.k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/imports/OptimizedImportsBuilder.kt +++ b/plugins/kotlin/code-insight/kotlin.code-insight.k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/imports/OptimizedImportsBuilder.kt @@ -4,7 +4,6 @@ package org.jetbrains.kotlin.idea.k2.codeinsight.imports import com.intellij.openapi.progress.ProgressManager import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.symbols.KaClassSymbol -import org.jetbrains.kotlin.analysis.api.symbols.KaClassifierSymbol import org.jetbrains.kotlin.config.ApiVersion import org.jetbrains.kotlin.idea.base.projectStructure.languageVersionSettings import org.jetbrains.kotlin.idea.base.psi.imports.KotlinImportPathComparator @@ -171,11 +170,11 @@ internal class OptimizedImportsBuilder( val originalUsedReference = UsedReference.run { createFrom(originalReference) } val alternativeUsedReference = UsedReference.run { createFrom(alternativeReference) } - val originalSymbols = originalUsedReference?.run { resolveToReferencedSymbols() } - val alternativeSymbols = alternativeUsedReference?.run { resolveToReferencedSymbols() } + val originalSymbols = originalUsedReference?.run { resolveToReferencedSymbols() }.orEmpty() + val alternativeSymbols = alternativeUsedReference?.run { resolveToReferencedSymbols() }.orEmpty() if (!areTargetsEqual(originalSymbols, alternativeSymbols)) { - val conflictingSymbols = originalSymbols.orEmpty() + alternativeSymbols.orEmpty() + val conflictingSymbols = originalSymbols + alternativeSymbols for (conflictingSymbol in conflictingSymbols) { lockImportForSymbol(conflictingSymbol.run { toSymbolInfo() }, names) @@ -187,13 +186,9 @@ internal class OptimizedImportsBuilder( } private fun KaSession.areTargetsEqual( - originalSymbols: Collection?, - alternativeSymbols: Collection? + originalSymbols: Collection, + alternativeSymbols: Collection ): Boolean { - if (originalSymbols == null || alternativeSymbols == null) { - return originalSymbols == alternativeSymbols - } - if (originalSymbols.size != alternativeSymbols.size) return false return originalSymbols.zip(alternativeSymbols).all { (originalSymbol, newSymbol) -> areTargetsEqual(originalSymbol, newSymbol) } @@ -203,11 +198,11 @@ internal class OptimizedImportsBuilder( originalSymbol: ReferencedSymbol, alternativeSymbol: ReferencedSymbol, ): Boolean { - val originalSymbol = originalSymbol.run { toSymbolInfo() } - val newSymbol = alternativeSymbol.run { toSymbolInfo() } + val originalSymbolInfo = originalSymbol.run { toSymbolInfo() } + val alternativeSymbolInfo = alternativeSymbol.run { toSymbolInfo() } - return originalSymbol == newSymbol || - importSymbolWithMapping(originalSymbol) == importSymbolWithMapping(newSymbol) + return originalSymbolInfo == alternativeSymbolInfo || + importSymbolWithMapping(originalSymbolInfo) == importSymbolWithMapping(alternativeSymbolInfo) } private fun KaSession.lockImportForSymbol(symbol: SymbolInfo, existingNames: Collection) {