From 1c8d1fcdbabff79aea0d69dad8f8d56d105990d8 Mon Sep 17 00:00:00 2001 From: Tianyu Geng Date: Fri, 12 Nov 2021 15:18:35 -0800 Subject: [PATCH] FIR Tree: make FirDefaultPropertyAccessor propagate `dispatchReceiverType` Custom property accessor has this property set and hence it make sense for the default accessor to have it too. Also, FE1.0's counterpart has this bit set and it's returned through the analysis API. --- .../kotlinPropertyGetter_unqualified.descriptors.txt | 4 ---- .../resolveCall/kotlinPropertyGetter_unqualified.txt | 2 +- .../resolveCall/kotlinPropertyNestedGetter.descriptors.txt | 4 ---- .../resolveCall/kotlinPropertyNestedGetter.txt | 2 +- .../resolveCall/kotlinPropertySetter.descriptors.txt | 4 ---- .../analysisSession/resolveCall/kotlinPropertySetter.txt | 2 +- .../kotlinPropertySetter_unqualified.descriptors.txt | 4 ---- .../resolveCall/kotlinPropertySetter_unqualified.txt | 2 +- .../fir/declarations/impl/FirDefaultPropertyAccessor.kt | 7 ++++++- 9 files changed, 10 insertions(+), 21 deletions(-) delete mode 100644 analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertyGetter_unqualified.descriptors.txt delete mode 100644 analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertyNestedGetter.descriptors.txt delete mode 100644 analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertySetter.descriptors.txt delete mode 100644 analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertySetter_unqualified.descriptors.txt diff --git a/analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertyGetter_unqualified.descriptors.txt b/analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertyGetter_unqualified.descriptors.txt deleted file mode 100644 index 282e4d87bfe..00000000000 --- a/analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertyGetter_unqualified.descriptors.txt +++ /dev/null @@ -1,4 +0,0 @@ -KtFunctionCall: -argumentMapping = { } -targetFunction = (: A): kotlin.Int -substitutor = \ No newline at end of file diff --git a/analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertyGetter_unqualified.txt b/analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertyGetter_unqualified.txt index 6115b7389b2..282e4d87bfe 100644 --- a/analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertyGetter_unqualified.txt +++ b/analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertyGetter_unqualified.txt @@ -1,4 +1,4 @@ KtFunctionCall: argumentMapping = { } -targetFunction = (): kotlin.Int +targetFunction = (: A): kotlin.Int substitutor = \ No newline at end of file diff --git a/analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertyNestedGetter.descriptors.txt b/analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertyNestedGetter.descriptors.txt deleted file mode 100644 index 5baba842987..00000000000 --- a/analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertyNestedGetter.descriptors.txt +++ /dev/null @@ -1,4 +0,0 @@ -KtFunctionCall: -argumentMapping = { } -targetFunction = (: KtClass): KtSubClass -substitutor = \ No newline at end of file diff --git a/analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertyNestedGetter.txt b/analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertyNestedGetter.txt index 66ebd8c917b..5baba842987 100644 --- a/analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertyNestedGetter.txt +++ b/analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertyNestedGetter.txt @@ -1,4 +1,4 @@ KtFunctionCall: argumentMapping = { } -targetFunction = (): KtSubClass +targetFunction = (: KtClass): KtSubClass substitutor = \ No newline at end of file diff --git a/analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertySetter.descriptors.txt b/analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertySetter.descriptors.txt deleted file mode 100644 index d7d54d9a9db..00000000000 --- a/analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertySetter.descriptors.txt +++ /dev/null @@ -1,4 +0,0 @@ -KtFunctionCall: -argumentMapping = { 42 -> (value: kotlin.Int) } -targetFunction = (: KtClass, value: kotlin.Int): kotlin.Unit -substitutor = \ No newline at end of file diff --git a/analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertySetter.txt b/analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertySetter.txt index 83841314ae0..d7d54d9a9db 100644 --- a/analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertySetter.txt +++ b/analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertySetter.txt @@ -1,4 +1,4 @@ KtFunctionCall: argumentMapping = { 42 -> (value: kotlin.Int) } -targetFunction = (value: kotlin.Int): kotlin.Unit +targetFunction = (: KtClass, value: kotlin.Int): kotlin.Unit substitutor = \ No newline at end of file diff --git a/analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertySetter_unqualified.descriptors.txt b/analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertySetter_unqualified.descriptors.txt deleted file mode 100644 index 9b309d1b8d0..00000000000 --- a/analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertySetter_unqualified.descriptors.txt +++ /dev/null @@ -1,4 +0,0 @@ -KtFunctionCall: -argumentMapping = { 1 -> (value: kotlin.Int) } -targetFunction = (: A, value: kotlin.Int): kotlin.Unit -substitutor = \ No newline at end of file diff --git a/analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertySetter_unqualified.txt b/analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertySetter_unqualified.txt index fb443f6ff52..9b309d1b8d0 100644 --- a/analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertySetter_unqualified.txt +++ b/analysis/analysis-api/testData/analysisSession/resolveCall/kotlinPropertySetter_unqualified.txt @@ -1,4 +1,4 @@ KtFunctionCall: argumentMapping = { 1 -> (value: kotlin.Int) } -targetFunction = (value: kotlin.Int): kotlin.Unit +targetFunction = (: A, value: kotlin.Int): kotlin.Unit substitutor = \ No newline at end of file diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultPropertyAccessor.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultPropertyAccessor.kt index f4b5f30e501..0a623ed865e 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultPropertyAccessor.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultPropertyAccessor.kt @@ -11,7 +11,8 @@ import org.jetbrains.kotlin.descriptors.EffectiveVisibility import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.fakeElement -import org.jetbrains.kotlin.fir.* +import org.jetbrains.kotlin.fir.FirImplementationDetail +import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.contracts.impl.FirEmptyContractDescription import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.builder.buildDefaultSetterValueParameter @@ -20,6 +21,7 @@ import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.symbols.impl.FirPropertyAccessorSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol +import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.impl.FirImplicitUnitTypeRef import org.jetbrains.kotlin.name.Name @@ -64,6 +66,9 @@ abstract class FirDefaultPropertyAccessor( get() = if (status is FirResolvedDeclarationStatus) FirResolvePhase.BODY_RESOLVE else FirResolvePhase.TYPES set(_) {} + override val dispatchReceiverType: ConeKotlinType? + get() = propertySymbol?.dispatchReceiverType + final override var body: FirBlock? get() = null set(_) {}