KT-64988 [AA] Unwrap safe call when resolving named arguments in FirReferenceResolveHelper
^KT-64988 Fixed
This commit is contained in:
+6
@@ -424,6 +424,12 @@ public class Fe10IdeNormalAnalysisSourceModuleReferenceResolveTestGenerated exte
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/parameterByName.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("parameterByNameInSafeCall.kt")
|
||||
public void testParameterByNameInSafeCall() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/parameterByNameInSafeCall.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("PlusAssignByHand.kt")
|
||||
public void testPlusAssignByHand() throws Exception {
|
||||
|
||||
+1
-2
@@ -16,7 +16,6 @@ import org.jetbrains.kotlin.analysis.api.fir.symbols.KtFirPackageSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.fir.unwrapSafeCall
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getOrBuildFir
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getOrBuildFirSafe
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.throwUnexpectedFirElementError
|
||||
import org.jetbrains.kotlin.analysis.utils.errors.unexpectedElementError
|
||||
import org.jetbrains.kotlin.fir.FirPackageDirective
|
||||
@@ -371,7 +370,7 @@ internal object FirReferenceResolveHelper {
|
||||
val ktValueArgumentList = ktValueArgument.parent as? KtValueArgumentList ?: return emptyList()
|
||||
val ktCallExpression = ktValueArgumentList.parent as? KtCallElement ?: return emptyList()
|
||||
|
||||
val firCall = ktCallExpression.getOrBuildFirSafe<FirCall>(analysisSession.firResolveSession) ?: return emptyList()
|
||||
val firCall = ktCallExpression.getOrBuildFir(analysisSession.firResolveSession)?.unwrapSafeCall() as? FirCall ?: return emptyList()
|
||||
val parameter = firCall.findCorrespondingParameter(ktValueArgument) ?: return emptyList()
|
||||
return listOfNotNull(parameter.buildSymbol(symbolBuilder))
|
||||
}
|
||||
|
||||
+6
@@ -424,6 +424,12 @@ public class FirIdeDependentAnalysisSourceModuleReferenceResolveTestGenerated ex
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/parameterByName.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("parameterByNameInSafeCall.kt")
|
||||
public void testParameterByNameInSafeCall() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/parameterByNameInSafeCall.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("PlusAssignByHand.kt")
|
||||
public void testPlusAssignByHand() throws Exception {
|
||||
|
||||
+6
@@ -424,6 +424,12 @@ public class FirIdeNormalAnalysisLibrarySourceModuleReferenceResolveTestGenerate
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/parameterByName.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("parameterByNameInSafeCall.kt")
|
||||
public void testParameterByNameInSafeCall() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/parameterByNameInSafeCall.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("PlusAssignByHand.kt")
|
||||
public void testPlusAssignByHand() throws Exception {
|
||||
|
||||
+6
@@ -424,6 +424,12 @@ public class FirIdeNormalAnalysisSourceModuleReferenceResolveTestGenerated exten
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/parameterByName.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("parameterByNameInSafeCall.kt")
|
||||
public void testParameterByNameInSafeCall() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/parameterByNameInSafeCall.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("PlusAssignByHand.kt")
|
||||
public void testPlusAssignByHand() throws Exception {
|
||||
|
||||
+6
@@ -424,6 +424,12 @@ public class FirStandaloneNormalAnalysisSourceModuleReferenceResolveTestGenerate
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/parameterByName.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("parameterByNameInSafeCall.kt")
|
||||
public void testParameterByNameInSafeCall() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/parameterByNameInSafeCall.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("PlusAssignByHand.kt")
|
||||
public void testPlusAssignByHand() throws Exception {
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
class Foo {
|
||||
fun bar(name: Int) {}
|
||||
}
|
||||
|
||||
fun usage(foo: Foo) {
|
||||
foo?.bar(na<caret>me = 10)
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
Resolved to:
|
||||
0: name: kotlin.Int
|
||||
Reference in New Issue
Block a user