diff --git a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/references/Fe10IdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/references/Fe10IdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java index 23ffb8cccee..30e2250c7b5 100644 --- a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/references/Fe10IdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java +++ b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/references/Fe10IdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java @@ -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 { diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/references/FirReferenceResolveHelper.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/references/FirReferenceResolveHelper.kt index ec349c8ac19..a8e3c7c309d 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/references/FirReferenceResolveHelper.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/references/FirReferenceResolveHelper.kt @@ -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(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)) } diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeDependentAnalysisSourceModuleReferenceResolveTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeDependentAnalysisSourceModuleReferenceResolveTestGenerated.java index a07bf102082..d735e10295d 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeDependentAnalysisSourceModuleReferenceResolveTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeDependentAnalysisSourceModuleReferenceResolveTestGenerated.java @@ -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 { diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisLibrarySourceModuleReferenceResolveTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisLibrarySourceModuleReferenceResolveTestGenerated.java index c7e879b94ba..4bcc61ca2a3 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisLibrarySourceModuleReferenceResolveTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisLibrarySourceModuleReferenceResolveTestGenerated.java @@ -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 { diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java index 890f68305eb..ef82bd8c73e 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java @@ -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 { diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/references/FirStandaloneNormalAnalysisSourceModuleReferenceResolveTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/references/FirStandaloneNormalAnalysisSourceModuleReferenceResolveTestGenerated.java index 4f0d6e0ee69..72d02e2674c 100644 --- a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/references/FirStandaloneNormalAnalysisSourceModuleReferenceResolveTestGenerated.java +++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/references/FirStandaloneNormalAnalysisSourceModuleReferenceResolveTestGenerated.java @@ -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 { diff --git a/analysis/analysis-api/testData/referenceResolve/parameterByNameInSafeCall.kt b/analysis/analysis-api/testData/referenceResolve/parameterByNameInSafeCall.kt new file mode 100644 index 00000000000..1bed62651e8 --- /dev/null +++ b/analysis/analysis-api/testData/referenceResolve/parameterByNameInSafeCall.kt @@ -0,0 +1,7 @@ +class Foo { + fun bar(name: Int) {} +} + +fun usage(foo: Foo) { + foo?.bar(name = 10) +} diff --git a/analysis/analysis-api/testData/referenceResolve/parameterByNameInSafeCall.txt b/analysis/analysis-api/testData/referenceResolve/parameterByNameInSafeCall.txt new file mode 100644 index 00000000000..e71de261934 --- /dev/null +++ b/analysis/analysis-api/testData/referenceResolve/parameterByNameInSafeCall.txt @@ -0,0 +1,2 @@ +Resolved to: +0: name: kotlin.Int \ No newline at end of file