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
@@ -241,6 +241,18 @@ public class Fe10IdeNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGene
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 {
@@ -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 {
@@ -241,6 +241,18 @@ public class FirStandaloneNormalAnalysisSourceModuleAnalysisApiImportOptimizerTe
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 {
@@ -0,0 +1,12 @@
// FILE: main.kt
package test
fun test() {
withOverloads()
}
// FILE: dependency.kt
package dependency
fun withOverloads(i: Int) {}
fun withOverloads(i: String) {}
@@ -0,0 +1,13 @@
// FILE: main.kt
package test
import dependency.function
fun test() {
function
}
// FILE: dependency.kt
package dependency
fun function() {}