KTIJ-26672 [AA] Correctly handle ConeAmbiguityError in KtFirImportOptimizer

Add a test case for missing call diagnostic just in case

^KTIJ-26672 Fixed
This commit is contained in:
Roman Golyshev
2023-08-16 17:57:33 +02:00
committed by teamcity
parent 033bb385b9
commit ef6e8ebb9b
8 changed files with 68 additions and 3 deletions
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.psi
import org.jetbrains.kotlin.fir.realPsi
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeAmbiguityError
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeUnresolvedError
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeUnresolvedNameError
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeUnresolvedReferenceError
@@ -300,9 +301,10 @@ internal class KtFirImportOptimizer(
}
private val FirErrorNamedReference.unresolvedName: Name?
get() {
val diagnostic = diagnostic as? ConeUnresolvedError ?: return null
return diagnostic.unresolvedName
get() = when (val diagnostic = diagnostic) {
is ConeUnresolvedError -> diagnostic.unresolvedName
is ConeAmbiguityError -> diagnostic.name
else -> null
}
private val ConeUnresolvedError.unresolvedName: Name?
@@ -241,6 +241,18 @@ public class FirIdeNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGener
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/importOptimizer/analyseImports/referencesWithErrors"), Pattern.compile("^([^.]+)\\.kt$"), null, true);
}
@Test
@TestMetadata("ambiguousFunction.kt")
public void testAmbiguousFunction() throws Exception {
runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/referencesWithErrors/ambiguousFunction.kt");
}
@Test
@TestMetadata("missingFunctionCall.kt")
public void testMissingFunctionCall() throws Exception {
runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/referencesWithErrors/missingFunctionCall.kt");
}
@Test
@TestMetadata("unresolvedFunction.kt")
public void testUnresolvedFunction() throws Exception {