From 0747fc36de5f87f3985b747151fef781c5b91f51 Mon Sep 17 00:00:00 2001 From: Roman Golyshev Date: Thu, 19 Oct 2023 18:40:07 +0200 Subject: [PATCH] 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 --- ...ceModuleReferenceResolveTestGenerated.java | 36 +++++++++++++++++++ .../kotlin/analysis/api/fir/FirUtils.kt | 5 +++ .../references/FirReferenceResolveHelper.kt | 8 +++-- ...ceModuleReferenceResolveTestGenerated.java | 36 +++++++++++++++++++ ...ceModuleReferenceResolveTestGenerated.java | 36 +++++++++++++++++++ ...ceModuleReferenceResolveTestGenerated.java | 36 +++++++++++++++++++ ...ceModuleReferenceResolveTestGenerated.java | 36 +++++++++++++++++++ ...Parameter_extensionProperty_regularCall.kt | 9 +++++ ...arameter_extensionProperty_regularCall.txt | 2 ++ ...ionParameter_extensionProperty_safeCall.kt | 9 +++++ ...onParameter_extensionProperty_safeCall.txt | 2 ++ ...xtensionParameter_parameter_regularCall.kt | 7 ++++ ...tensionParameter_parameter_regularCall.txt | 2 ++ ...thExtensionParameter_parameter_safeCall.kt | 7 ++++ ...hExtensionParameter_parameter_safeCall.txt | 2 ++ ...ExtensionParameter_property_regularCall.kt | 9 +++++ ...xtensionParameter_property_regularCall.txt | 2 ++ ...ithExtensionParameter_property_safeCall.kt | 9 +++++ ...thExtensionParameter_property_safeCall.txt | 2 ++ 19 files changed, 252 insertions(+), 3 deletions(-) create mode 100644 analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_extensionProperty_regularCall.kt create mode 100644 analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_extensionProperty_regularCall.txt create mode 100644 analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_extensionProperty_safeCall.kt create mode 100644 analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_extensionProperty_safeCall.txt create mode 100644 analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_parameter_regularCall.kt create mode 100644 analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_parameter_regularCall.txt create mode 100644 analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_parameter_safeCall.kt create mode 100644 analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_parameter_safeCall.txt create mode 100644 analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_property_regularCall.kt create mode 100644 analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_property_regularCall.txt create mode 100644 analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_property_safeCall.kt create mode 100644 analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_property_safeCall.txt 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 b1ad140b4fa..25373212408 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 @@ -1123,6 +1123,42 @@ public class Fe10IdeNormalAnalysisSourceModuleReferenceResolveTestGenerated exte 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 { diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/FirUtils.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/FirUtils.kt index 0cb5236716d..f67d0a66fdf 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/FirUtils.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/FirUtils.kt @@ -15,6 +15,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol import org.jetbrains.kotlin.builtins.StandardNames import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget import org.jetbrains.kotlin.fir.FirAnnotationContainer +import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.getAnnotationsByClassId import org.jetbrains.kotlin.fir.declarations.getStringArgument @@ -25,6 +26,7 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotation import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirFunctionCall import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier +import org.jetbrains.kotlin.fir.expressions.FirSafeCallExpression import org.jetbrains.kotlin.fir.expressions.arguments import org.jetbrains.kotlin.fir.psi import org.jetbrains.kotlin.fir.references.FirErrorNamedReference @@ -130,3 +132,6 @@ fun FirAnnotationContainer.getJvmNameFromAnnotation(session: FirSession, target: ?.takeIf { target == null || call.useSiteTarget == target } } } + +internal fun FirElement.unwrapSafeCall(): FirElement = + (this as? FirSafeCallExpression)?.selector ?: this \ No newline at end of file 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 ae65516bc92..ec349c8ac19 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 @@ -13,6 +13,7 @@ import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.analysis.api.fir.buildSymbol import org.jetbrains.kotlin.analysis.api.fir.getCandidateSymbols 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 @@ -322,9 +323,10 @@ internal object FirReferenceResolveHelper { ): Collection { val parentAsCall = expression.parent as? KtCallExpression if (parentAsCall != null) { - val firResolvable = parentAsCall.getOrBuildFirSafe(analysisSession.firResolveSession) - if (firResolvable != null) { - return getSymbolsByResolvable(firResolvable, expression, session, symbolBuilder) + val firCall = parentAsCall.getOrBuildFir(analysisSession.firResolveSession)?.unwrapSafeCall() + + if (firCall is FirResolvable) { + return getSymbolsByResolvable(firCall, expression, session, symbolBuilder) } } return fir.toTargetSymbol(session, 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 ef224d80e2d..bb8598a58a6 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 @@ -1123,6 +1123,42 @@ public class FirIdeDependentAnalysisSourceModuleReferenceResolveTestGenerated ex 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 { 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 84fcb65c84b..b69b9a55d59 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 @@ -1047,6 +1047,42 @@ public class FirIdeNormalAnalysisLibrarySourceModuleReferenceResolveTestGenerate 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 { 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 4f85f040840..3b4ef70c629 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 @@ -1123,6 +1123,42 @@ public class FirIdeNormalAnalysisSourceModuleReferenceResolveTestGenerated exten 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 { 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 84be16f6085..2b41b3834ad 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 @@ -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 { diff --git a/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_extensionProperty_regularCall.kt b/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_extensionProperty_regularCall.kt new file mode 100644 index 00000000000..d31d8153c70 --- /dev/null +++ b/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_extensionProperty_regularCall.kt @@ -0,0 +1,9 @@ +package test + +class Foo + +val Foo.action: () -> Unit get() = {} + +fun usage(foo: Foo) { + foo.action() +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_extensionProperty_regularCall.txt b/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_extensionProperty_regularCall.txt new file mode 100644 index 00000000000..19a561728b1 --- /dev/null +++ b/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_extensionProperty_regularCall.txt @@ -0,0 +1,2 @@ +Resolved to: +0: (in test) val test.Foo.action: () -> kotlin.Unit diff --git a/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_extensionProperty_safeCall.kt b/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_extensionProperty_safeCall.kt new file mode 100644 index 00000000000..53d37593fd6 --- /dev/null +++ b/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_extensionProperty_safeCall.kt @@ -0,0 +1,9 @@ +package test + +class Foo + +val Foo.action: () -> Unit get() = {} + +fun usage(foo: Foo?) { + foo?.action() +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_extensionProperty_safeCall.txt b/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_extensionProperty_safeCall.txt new file mode 100644 index 00000000000..19a561728b1 --- /dev/null +++ b/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_extensionProperty_safeCall.txt @@ -0,0 +1,2 @@ +Resolved to: +0: (in test) val test.Foo.action: () -> kotlin.Unit diff --git a/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_parameter_regularCall.kt b/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_parameter_regularCall.kt new file mode 100644 index 00000000000..3d18325c0d2 --- /dev/null +++ b/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_parameter_regularCall.kt @@ -0,0 +1,7 @@ +package test + +class Foo + +fun usage(foo: Foo, action: Foo.() -> Unit) { + foo.action() +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_parameter_regularCall.txt b/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_parameter_regularCall.txt new file mode 100644 index 00000000000..684e6767f38 --- /dev/null +++ b/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_parameter_regularCall.txt @@ -0,0 +1,2 @@ +Resolved to: +0: action: test.Foo.() -> kotlin.Unit diff --git a/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_parameter_safeCall.kt b/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_parameter_safeCall.kt new file mode 100644 index 00000000000..adac1b931a3 --- /dev/null +++ b/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_parameter_safeCall.kt @@ -0,0 +1,7 @@ +package test + +class Foo + +fun usage(foo: Foo?, action: Foo.() -> Unit) { + foo?.action() +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_parameter_safeCall.txt b/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_parameter_safeCall.txt new file mode 100644 index 00000000000..f023fa173a2 --- /dev/null +++ b/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_parameter_safeCall.txt @@ -0,0 +1,2 @@ +Resolved to: +0: action: test.Foo.() -> kotlin.Unit \ No newline at end of file diff --git a/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_property_regularCall.kt b/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_property_regularCall.kt new file mode 100644 index 00000000000..214bd65e6fe --- /dev/null +++ b/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_property_regularCall.kt @@ -0,0 +1,9 @@ +package test + +class Foo { + val action: () -> Unit = {} +} + +fun usage(foo: Foo) { + foo.action() +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_property_regularCall.txt b/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_property_regularCall.txt new file mode 100644 index 00000000000..e8ebfab37c2 --- /dev/null +++ b/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_property_regularCall.txt @@ -0,0 +1,2 @@ +Resolved to: +0: (in test.Foo) val action: () -> kotlin.Unit diff --git a/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_property_safeCall.kt b/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_property_safeCall.kt new file mode 100644 index 00000000000..6722467a5ed --- /dev/null +++ b/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_property_safeCall.kt @@ -0,0 +1,9 @@ +package test + +class Foo { + val action: () -> Unit = {} +} + +fun usage(foo: Foo?) { + foo?.action() +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_property_safeCall.txt b/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_property_safeCall.txt new file mode 100644 index 00000000000..e8ebfab37c2 --- /dev/null +++ b/analysis/analysis-api/testData/referenceResolve/invoke/lambdaWithExtensionParameter_property_safeCall.txt @@ -0,0 +1,2 @@ +Resolved to: +0: (in test.Foo) val action: () -> kotlin.Unit