From bd92224aec7962d0d6371fcb5a77d821874ac745 Mon Sep 17 00:00:00 2001 From: Roman Golyshev Date: Tue, 24 Oct 2023 18:24:46 +0200 Subject: [PATCH] KTIJ-26423 [AA] Ignore artificial `Array` type from varargs parameters in `KtFirImportOptimizer` --- .../analysis/api/fir/components/KtFirImportOptimizer.kt | 9 ++++++++- .../analyseImports/usedTypeAsVarargType.importsAnalysis | 3 --- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirImportOptimizer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirImportOptimizer.kt index 2dc703f2cd4..facc20fc489 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirImportOptimizer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirImportOptimizer.kt @@ -519,7 +519,14 @@ private sealed interface TypeQualifier { private val FirResolvedTypeRef.isPresentInSource: Boolean get() = when (source?.kind) { - is KtRealSourceElementKind -> true + is KtRealSourceElementKind -> { + val isArrayFromVararg = delegatedTypeRef?.source?.kind is KtFakeSourceElementKind.ArrayTypeFromVarargParameter; + + // type ref with delegated type ref with such source kind is NOT directly present in the source, so we ignore it + !isArrayFromVararg + } + + // type ref with such source kind is explicitly present in the source, so we want to see it is KtFakeSourceElementKind.ArrayTypeFromVarargParameter -> true else -> false diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/usedTypeAsVarargType.importsAnalysis b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/usedTypeAsVarargType.importsAnalysis index 1c42aed8fb8..5d661091401 100644 --- a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/usedTypeAsVarargType.importsAnalysis +++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/usedTypeAsVarargType.importsAnalysis @@ -3,7 +3,4 @@ USED DECLARATIONS: Declaration: dependency.Bar By names: [Bar] -Declaration: kotlin.Array -By names: [Bar] - UNRESOLVED NAMES: