KTIJ-27434 [AA] Unwrap safe call expression when resolving implicit invoke calls

`FirSafeCallExpression` does not implement `FirResolvable`, so we need
to unwrap it to correctly resolve calls like `foo?.bar()` when `bar` is
a lambda with receiver parameter or a functional type property

^KTIJ-27434 Fixed
This commit is contained in:
Roman Golyshev
2023-10-19 18:40:07 +02:00
committed by teamcity
parent 86fd889138
commit 0747fc36de
19 changed files with 252 additions and 3 deletions
@@ -1123,6 +1123,42 @@ public class FirStandaloneNormalAnalysisSourceModuleReferenceResolveTestGenerate
runTest("analysis/analysis-api/testData/referenceResolve/invoke/lambdaNoParRCurly.kt");
}
@Test
@TestMetadata("lambdaWithExtensionParameter_extensionProperty_regularCall.kt")
public void testLambdaWithExtensionParameter_extensionProperty_regularCall() throws Exception {
runTest("analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_extensionProperty_regularCall.kt");
}
@Test
@TestMetadata("lambdaWithExtensionParameter_extensionProperty_safeCall.kt")
public void testLambdaWithExtensionParameter_extensionProperty_safeCall() throws Exception {
runTest("analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_extensionProperty_safeCall.kt");
}
@Test
@TestMetadata("lambdaWithExtensionParameter_parameter_regularCall.kt")
public void testLambdaWithExtensionParameter_parameter_regularCall() throws Exception {
runTest("analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_parameter_regularCall.kt");
}
@Test
@TestMetadata("lambdaWithExtensionParameter_parameter_safeCall.kt")
public void testLambdaWithExtensionParameter_parameter_safeCall() throws Exception {
runTest("analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_parameter_safeCall.kt");
}
@Test
@TestMetadata("lambdaWithExtensionParameter_property_regularCall.kt")
public void testLambdaWithExtensionParameter_property_regularCall() throws Exception {
runTest("analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_property_regularCall.kt");
}
@Test
@TestMetadata("lambdaWithExtensionParameter_property_safeCall.kt")
public void testLambdaWithExtensionParameter_property_safeCall() throws Exception {
runTest("analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_property_safeCall.kt");
}
@Test
@TestMetadata("noParams.kt")
public void testNoParams() throws Exception {