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

Such qualifiers can appear for extensions imported from objects

^KTIJ-24610 Fixed
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 22835db..fc082bc 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
@@ -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 @@
 
     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
 
diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/importOptimizer/FirIdeNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/importOptimizer/FirIdeNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java
index 259b088..d5cdf9e 100644
--- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/importOptimizer/FirIdeNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java
+++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/importOptimizer/FirIdeNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java
@@ -47,6 +47,12 @@
     }
 
     @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 {
         runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedAliasedTypeImport.kt");
diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/importOptimizer/FirStandaloneNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/importOptimizer/FirStandaloneNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java
index 9aa29ca..157f3bf 100644
--- a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/importOptimizer/FirStandaloneNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java
+++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/importOptimizer/FirStandaloneNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java
@@ -47,6 +47,12 @@
     }
 
     @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 {
         runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedAliasedTypeImport.kt");
diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/unsedObjectWithExtensionFromObject.imports b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/unsedObjectWithExtensionFromObject.imports
new file mode 100644
index 0000000..217f9de
--- /dev/null
+++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/unsedObjectWithExtensionFromObject.imports
@@ -0,0 +1 @@
+dependency.Bar.Companion
diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/unsedObjectWithExtensionFromObject.kt b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/unsedObjectWithExtensionFromObject.kt
new file mode 100644
index 0000000..03ecd2c
--- /dev/null
+++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/unsedObjectWithExtensionFromObject.kt
@@ -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
+    }
+}