[Analysis API] KTIJ-24610 Ignore qualifiers with fake source in KtFirImportOptimizer

Such qualifiers can appear for extensions imported from objects

^KTIJ-24610 Fixed
This commit is contained in:
Roman Golyshev
2023-02-13 16:27:44 +01:00
committed by teamcity
parent 515a401b23
commit b23aabf6e0
5 changed files with 32 additions and 0 deletions
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.analysis.api.fir.components
import org.jetbrains.kotlin.KtRealSourceElementKind
import org.jetbrains.kotlin.analysis.api.components.KtImportOptimizer
import org.jetbrains.kotlin.analysis.api.components.KtImportOptimizerResult
import org.jetbrains.kotlin.analysis.api.fir.getCandidateSymbols
@@ -370,6 +371,8 @@ private sealed interface TypeQualifier {
companion object {
fun createFor(qualifier: FirResolvedQualifier): TypeQualifier? {
if (qualifier.source?.kind !is KtRealSourceElementKind) return null
val wholeClassId = qualifier.classId ?: return null
val psi = qualifier.psi as? KtExpression ?: return null
@@ -46,6 +46,12 @@ public class FirIdeNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGener
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/importOptimizer/analyseImports"), Pattern.compile("^([^.]+)\\.kt$"), null, true);
}
@Test
@TestMetadata("unsedObjectWithExtensionFromObject.kt")
public void testUnsedObjectWithExtensionFromObject() throws Exception {
runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/unsedObjectWithExtensionFromObject.kt");
}
@Test
@TestMetadata("unusedAliasedTypeImport.kt")
public void testUnusedAliasedTypeImport() throws Exception {
@@ -46,6 +46,12 @@ public class FirStandaloneNormalAnalysisSourceModuleAnalysisApiImportOptimizerTe
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/importOptimizer/analyseImports"), Pattern.compile("^([^.]+)\\.kt$"), null, true);
}
@Test
@TestMetadata("unsedObjectWithExtensionFromObject.kt")
public void testUnsedObjectWithExtensionFromObject() throws Exception {
runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/unsedObjectWithExtensionFromObject.kt");
}
@Test
@TestMetadata("unusedAliasedTypeImport.kt")
public void testUnusedAliasedTypeImport() throws Exception {
@@ -0,0 +1,16 @@
// FILE: main.kt
import dependency.Bar.Companion.minutes
import dependency.Bar.Companion
fun test() {
10.minutes
}
// FILE: dependency.kt
package dependency
class Bar {
companion object {
val Int.minutes: Int get() = this
}
}