From a0fef89423656849c5a647ce07f0edb89eb3e1c6 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 19 Feb 2024 11:10:27 +0100 Subject: [PATCH] [AA] take resolved type of FirThisReceiverExpression ...when computing receiver type for double colon expression ^KT-65914 fixed --- ...ceModuleDoubleColonReceiverTypeTestGenerated.java | 12 ++++++++++++ .../analysis/api/fir/components/KtFirTypeProvider.kt | 3 +++ ...ceModuleDoubleColonReceiverTypeTestGenerated.java | 12 ++++++++++++ ...ceModuleDoubleColonReceiverTypeTestGenerated.java | 12 ++++++++++++ ...ceModuleDoubleColonReceiverTypeTestGenerated.java | 12 ++++++++++++ .../doubleColonReceiverType/outerThisReceiver.kt | 8 ++++++++ .../doubleColonReceiverType/outerThisReceiver.txt | 2 ++ .../doubleColonReceiverType/thisReceiver.kt | 6 ++++++ .../doubleColonReceiverType/thisReceiver.txt | 2 ++ 9 files changed, 69 insertions(+) create mode 100644 analysis/analysis-api/testData/components/typeInfoProvider/doubleColonReceiverType/outerThisReceiver.kt create mode 100644 analysis/analysis-api/testData/components/typeInfoProvider/doubleColonReceiverType/outerThisReceiver.txt create mode 100644 analysis/analysis-api/testData/components/typeInfoProvider/doubleColonReceiverType/thisReceiver.kt create mode 100644 analysis/analysis-api/testData/components/typeInfoProvider/doubleColonReceiverType/thisReceiver.txt diff --git a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/typeInfoProvider/Fe10IdeNormalAnalysisSourceModuleDoubleColonReceiverTypeTestGenerated.java b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/typeInfoProvider/Fe10IdeNormalAnalysisSourceModuleDoubleColonReceiverTypeTestGenerated.java index 42660287b36..f2fe3e81a91 100644 --- a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/typeInfoProvider/Fe10IdeNormalAnalysisSourceModuleDoubleColonReceiverTypeTestGenerated.java +++ b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/typeInfoProvider/Fe10IdeNormalAnalysisSourceModuleDoubleColonReceiverTypeTestGenerated.java @@ -93,4 +93,16 @@ public class Fe10IdeNormalAnalysisSourceModuleDoubleColonReceiverTypeTestGenerat public void testMethodReference_variable() { runTest("analysis/analysis-api/testData/components/typeInfoProvider/doubleColonReceiverType/methodReference_variable.kt"); } + + @Test + @TestMetadata("outerThisReceiver.kt") + public void testOuterThisReceiver() { + runTest("analysis/analysis-api/testData/components/typeInfoProvider/doubleColonReceiverType/outerThisReceiver.kt"); + } + + @Test + @TestMetadata("thisReceiver.kt") + public void testThisReceiver() { + runTest("analysis/analysis-api/testData/components/typeInfoProvider/doubleColonReceiverType/thisReceiver.kt"); + } } diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirTypeProvider.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirTypeProvider.kt index 6d945017a6b..698c61f6c0b 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirTypeProvider.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirTypeProvider.kt @@ -192,6 +192,9 @@ internal class KtFirTypeProvider( } is FirCallableReferenceAccess -> { when (val explicitReceiver = fir.explicitReceiver) { + is FirThisReceiverExpression -> { + explicitReceiver.resolvedType.asKtType() + } is FirPropertyAccessExpression -> { explicitReceiver.resolvedType.asKtType() } diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/typeInfoProvider/FirIdeDependentAnalysisSourceModuleDoubleColonReceiverTypeTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/typeInfoProvider/FirIdeDependentAnalysisSourceModuleDoubleColonReceiverTypeTestGenerated.java index d7d897dc91d..a6eb5ffdb8f 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/typeInfoProvider/FirIdeDependentAnalysisSourceModuleDoubleColonReceiverTypeTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/typeInfoProvider/FirIdeDependentAnalysisSourceModuleDoubleColonReceiverTypeTestGenerated.java @@ -93,4 +93,16 @@ public class FirIdeDependentAnalysisSourceModuleDoubleColonReceiverTypeTestGener public void testMethodReference_variable() { runTest("analysis/analysis-api/testData/components/typeInfoProvider/doubleColonReceiverType/methodReference_variable.kt"); } + + @Test + @TestMetadata("outerThisReceiver.kt") + public void testOuterThisReceiver() { + runTest("analysis/analysis-api/testData/components/typeInfoProvider/doubleColonReceiverType/outerThisReceiver.kt"); + } + + @Test + @TestMetadata("thisReceiver.kt") + public void testThisReceiver() { + runTest("analysis/analysis-api/testData/components/typeInfoProvider/doubleColonReceiverType/thisReceiver.kt"); + } } diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/typeInfoProvider/FirIdeNormalAnalysisSourceModuleDoubleColonReceiverTypeTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/typeInfoProvider/FirIdeNormalAnalysisSourceModuleDoubleColonReceiverTypeTestGenerated.java index dfe0dc7fe6c..003f810c10b 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/typeInfoProvider/FirIdeNormalAnalysisSourceModuleDoubleColonReceiverTypeTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/typeInfoProvider/FirIdeNormalAnalysisSourceModuleDoubleColonReceiverTypeTestGenerated.java @@ -93,4 +93,16 @@ public class FirIdeNormalAnalysisSourceModuleDoubleColonReceiverTypeTestGenerate public void testMethodReference_variable() { runTest("analysis/analysis-api/testData/components/typeInfoProvider/doubleColonReceiverType/methodReference_variable.kt"); } + + @Test + @TestMetadata("outerThisReceiver.kt") + public void testOuterThisReceiver() { + runTest("analysis/analysis-api/testData/components/typeInfoProvider/doubleColonReceiverType/outerThisReceiver.kt"); + } + + @Test + @TestMetadata("thisReceiver.kt") + public void testThisReceiver() { + runTest("analysis/analysis-api/testData/components/typeInfoProvider/doubleColonReceiverType/thisReceiver.kt"); + } } diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/typeInfoProvider/FirStandaloneNormalAnalysisSourceModuleDoubleColonReceiverTypeTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/typeInfoProvider/FirStandaloneNormalAnalysisSourceModuleDoubleColonReceiverTypeTestGenerated.java index e6a986fe27d..0120543a876 100644 --- a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/typeInfoProvider/FirStandaloneNormalAnalysisSourceModuleDoubleColonReceiverTypeTestGenerated.java +++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/typeInfoProvider/FirStandaloneNormalAnalysisSourceModuleDoubleColonReceiverTypeTestGenerated.java @@ -93,4 +93,16 @@ public class FirStandaloneNormalAnalysisSourceModuleDoubleColonReceiverTypeTestG public void testMethodReference_variable() { runTest("analysis/analysis-api/testData/components/typeInfoProvider/doubleColonReceiverType/methodReference_variable.kt"); } + + @Test + @TestMetadata("outerThisReceiver.kt") + public void testOuterThisReceiver() { + runTest("analysis/analysis-api/testData/components/typeInfoProvider/doubleColonReceiverType/outerThisReceiver.kt"); + } + + @Test + @TestMetadata("thisReceiver.kt") + public void testThisReceiver() { + runTest("analysis/analysis-api/testData/components/typeInfoProvider/doubleColonReceiverType/thisReceiver.kt"); + } } diff --git a/analysis/analysis-api/testData/components/typeInfoProvider/doubleColonReceiverType/outerThisReceiver.kt b/analysis/analysis-api/testData/components/typeInfoProvider/doubleColonReceiverType/outerThisReceiver.kt new file mode 100644 index 00000000000..83b3415de6a --- /dev/null +++ b/analysis/analysis-api/testData/components/typeInfoProvider/doubleColonReceiverType/outerThisReceiver.kt @@ -0,0 +1,8 @@ +class Test { + fun bar(): Int = 42 + inner class Foo { + fun m() { + val f = this@Test::bar + } + } +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/typeInfoProvider/doubleColonReceiverType/outerThisReceiver.txt b/analysis/analysis-api/testData/components/typeInfoProvider/doubleColonReceiverType/outerThisReceiver.txt new file mode 100644 index 00000000000..f74791a4d0b --- /dev/null +++ b/analysis/analysis-api/testData/components/typeInfoProvider/doubleColonReceiverType/outerThisReceiver.txt @@ -0,0 +1,2 @@ +expression: this@Test::bar +receiver:: type: Test diff --git a/analysis/analysis-api/testData/components/typeInfoProvider/doubleColonReceiverType/thisReceiver.kt b/analysis/analysis-api/testData/components/typeInfoProvider/doubleColonReceiverType/thisReceiver.kt new file mode 100644 index 00000000000..bd27d31a52a --- /dev/null +++ b/analysis/analysis-api/testData/components/typeInfoProvider/doubleColonReceiverType/thisReceiver.kt @@ -0,0 +1,6 @@ +class Test { + fun bar(): Int = 42 + fun m() { + val f = this::bar + } +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/typeInfoProvider/doubleColonReceiverType/thisReceiver.txt b/analysis/analysis-api/testData/components/typeInfoProvider/doubleColonReceiverType/thisReceiver.txt new file mode 100644 index 00000000000..b4eb5e2537d --- /dev/null +++ b/analysis/analysis-api/testData/components/typeInfoProvider/doubleColonReceiverType/thisReceiver.txt @@ -0,0 +1,2 @@ +expression: this::bar +receiver:: type: Test