From 6653f654ec899b71ec0d10a666c66b0500c55e80 Mon Sep 17 00:00:00 2001 From: Nikolay Lunyak Date: Fri, 30 Sep 2022 11:43:49 +0300 Subject: [PATCH] [FIR] Add the missing `transformPropertyAccessor` override Otherwise, `transformPropertyAccessor` from `FirDeclarationsResolveTransformerForArgumentAnnotations` is never called See: - compiler/testData/asJava/ultraLightFacades/properties.kt - analysis/analysis-api/testData/symbols/symbolByPsi/ contextReceivers/contextReceiversOnProperty.kt --- .../low/level/api/fir/api/FirDeclarationDesignation.kt | 2 +- .../level/api/fir/lazy/resolve/FirLazyBodiesCalculator.kt | 5 +++++ .../low/level/api/fir/util/firCheckResolvedUtils.kt | 2 +- .../fir/resolve/transformers/FirStatusResolveTransformer.kt | 4 ++++ .../transformers/body/resolve/FirBodyResolveTransformer.kt | 4 ++++ .../body/resolve/FirDeclarationsResolveTransformer.kt | 6 ++++++ 6 files changed, 21 insertions(+), 2 deletions(-) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/FirDeclarationDesignation.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/FirDeclarationDesignation.kt index 058c8f7bff7..473ced556d3 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/FirDeclarationDesignation.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/FirDeclarationDesignation.kt @@ -65,7 +65,7 @@ private fun collectDesignationPath(declaration: FirDeclaration): List { + is FirSimpleFunction, is FirProperty, is FirField, is FirConstructor, is FirEnumEntry, is FirPropertyAccessor -> { val klass = declaration.containingClassLookupTag() ?: return emptyList() if (klass.classId.isLocal) return null klass.toFirRegularClassFromSameSession(declaration.moduleData.session) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/FirLazyBodiesCalculator.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/FirLazyBodiesCalculator.kt index a8c700efa32..ca24b2f5519 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/FirLazyBodiesCalculator.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/FirLazyBodiesCalculator.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.utils.getExplicitBackingField import org.jetbrains.kotlin.fir.expressions.FirFunctionCall +import org.jetbrains.kotlin.fir.expressions.FirStatement import org.jetbrains.kotlin.fir.expressions.FirWrappedDelegateExpression import org.jetbrains.kotlin.fir.expressions.impl.FirLazyBlock import org.jetbrains.kotlin.fir.expressions.impl.FirLazyExpression @@ -174,4 +175,8 @@ private object FirLazyBodiesCalculatorTransformer : FirTransformer): FirStatement { + return propertyAccessor.also { transformProperty(it.propertySymbol.fir, data) } + } } diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/firCheckResolvedUtils.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/firCheckResolvedUtils.kt index cce4bdbfa98..cc0a0e74264 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/firCheckResolvedUtils.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/firCheckResolvedUtils.kt @@ -63,7 +63,7 @@ internal fun checkDeclarationStatusIsResolved(declaration: FirMemberDeclaration) val status = declaration.status checkWithAttachmentBuilder( condition = status is FirResolvedDeclarationStatus, - message = { "Expected ${FirResolvedDeclarationStatus::class.simpleName} but ${declaration::class.simpleName} found for ${declaration::class.simpleName}" } + message = { "Expected ${FirResolvedDeclarationStatus::class.simpleName} but ${status::class.simpleName} found for ${declaration::class.simpleName}" } ) { withFirEntry("declaration", declaration) } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolveTransformer.kt index 0949321f9bb..0029ed4bbb8 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolveTransformer.kt @@ -525,6 +525,10 @@ abstract class AbstractFirStatusResolveTransformer( return transformDeclaration(field, data) as FirField } + override fun transformPropertyAccessor(propertyAccessor: FirPropertyAccessor, data: FirResolvedDeclarationStatus?): FirStatement { + return propertyAccessor.also { transformProperty(it.propertySymbol.fir, data) } + } + override fun transformEnumEntry( enumEntry: FirEnumEntry, data: FirResolvedDeclarationStatus? diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirBodyResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirBodyResolveTransformer.kt index 4f5e817ae50..e515b8abbd3 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirBodyResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirBodyResolveTransformer.kt @@ -282,6 +282,10 @@ open class FirBodyResolveTransformer( return declarationsTransformer.transformProperty(property, data) } + override fun transformPropertyAccessor(propertyAccessor: FirPropertyAccessor, data: ResolutionMode): FirStatement { + return declarationsTransformer.transformPropertyAccessor(propertyAccessor, data) + } + override fun transformBackingField( backingField: FirBackingField, data: ResolutionMode diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt index 8e562739ad2..65df91046ad 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt @@ -298,6 +298,12 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor } } + override fun transformPropertyAccessor(propertyAccessor: FirPropertyAccessor, data: ResolutionMode): FirStatement { + return propertyAccessor.also { + transformProperty(it.propertySymbol.fir, data) + } + } + override fun transformWrappedDelegateExpression( wrappedDelegateExpression: FirWrappedDelegateExpression, data: ResolutionMode,