[AA] take resolved type of FirThisReceiverExpression

...when computing receiver type for double colon expression

^KT-65914 fixed
This commit is contained in:
Anna Kozlova
2024-02-19 11:10:27 +01:00
committed by Space Team
parent 50a0a1ef0a
commit a0fef89423
9 changed files with 69 additions and 0 deletions
@@ -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");
}
}
@@ -192,6 +192,9 @@ internal class KtFirTypeProvider(
}
is FirCallableReferenceAccess -> {
when (val explicitReceiver = fir.explicitReceiver) {
is FirThisReceiverExpression -> {
explicitReceiver.resolvedType.asKtType()
}
is FirPropertyAccessExpression -> {
explicitReceiver.resolvedType.asKtType()
}
@@ -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");
}
}
@@ -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");
}
}
@@ -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");
}
}
@@ -0,0 +1,8 @@
class Test {
fun bar(): Int = 42
inner class Foo {
fun m() {
val f = this@Test:<caret>:bar
}
}
}
@@ -0,0 +1,2 @@
expression: this@Test::bar
receiver:: type: Test
@@ -0,0 +1,6 @@
class Test {
fun bar(): Int = 42
fun m() {
val f = this:<caret>:bar
}
}
@@ -0,0 +1,2 @@
expression: this::bar
receiver:: type: Test