[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
This commit is contained in:
Nikolay Lunyak
2022-09-30 11:43:49 +03:00
parent ef54a6d7cb
commit 6653f654ec
6 changed files with 21 additions and 2 deletions
@@ -65,7 +65,7 @@ private fun collectDesignationPath(declaration: FirDeclaration): List<FirDeclara
if (declaration !is FirConstructor && declaration.symbol.callableId.isLocal) return null if (declaration !is FirConstructor && declaration.symbol.callableId.isLocal) return null
if ((declaration as? FirCallableDeclaration)?.status?.visibility == Visibilities.Local) return null if ((declaration as? FirCallableDeclaration)?.status?.visibility == Visibilities.Local) return null
when (declaration) { when (declaration) {
is FirSimpleFunction, is FirProperty, is FirField, is FirConstructor, is FirEnumEntry -> { is FirSimpleFunction, is FirProperty, is FirField, is FirConstructor, is FirEnumEntry, is FirPropertyAccessor -> {
val klass = declaration.containingClassLookupTag() ?: return emptyList() val klass = declaration.containingClassLookupTag() ?: return emptyList()
if (klass.classId.isLocal) return null if (klass.classId.isLocal) return null
klass.toFirRegularClassFromSameSession(declaration.moduleData.session) klass.toFirRegularClassFromSameSession(declaration.moduleData.session)
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.utils.getExplicitBackingField import org.jetbrains.kotlin.fir.declarations.utils.getExplicitBackingField
import org.jetbrains.kotlin.fir.expressions.FirFunctionCall 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.FirWrappedDelegateExpression
import org.jetbrains.kotlin.fir.expressions.impl.FirLazyBlock import org.jetbrains.kotlin.fir.expressions.impl.FirLazyBlock
import org.jetbrains.kotlin.fir.expressions.impl.FirLazyExpression import org.jetbrains.kotlin.fir.expressions.impl.FirLazyExpression
@@ -174,4 +175,8 @@ private object FirLazyBodiesCalculatorTransformer : FirTransformer<PersistentLis
} }
return property return property
} }
override fun transformPropertyAccessor(propertyAccessor: FirPropertyAccessor, data: PersistentList<FirDeclaration>): FirStatement {
return propertyAccessor.also { transformProperty(it.propertySymbol.fir, data) }
}
} }
@@ -63,7 +63,7 @@ internal fun checkDeclarationStatusIsResolved(declaration: FirMemberDeclaration)
val status = declaration.status val status = declaration.status
checkWithAttachmentBuilder( checkWithAttachmentBuilder(
condition = status is FirResolvedDeclarationStatus, 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) withFirEntry("declaration", declaration)
} }
@@ -525,6 +525,10 @@ abstract class AbstractFirStatusResolveTransformer(
return transformDeclaration(field, data) as FirField 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( override fun transformEnumEntry(
enumEntry: FirEnumEntry, enumEntry: FirEnumEntry,
data: FirResolvedDeclarationStatus? data: FirResolvedDeclarationStatus?
@@ -282,6 +282,10 @@ open class FirBodyResolveTransformer(
return declarationsTransformer.transformProperty(property, data) return declarationsTransformer.transformProperty(property, data)
} }
override fun transformPropertyAccessor(propertyAccessor: FirPropertyAccessor, data: ResolutionMode): FirStatement {
return declarationsTransformer.transformPropertyAccessor(propertyAccessor, data)
}
override fun transformBackingField( override fun transformBackingField(
backingField: FirBackingField, backingField: FirBackingField,
data: ResolutionMode data: ResolutionMode
@@ -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( override fun transformWrappedDelegateExpression(
wrappedDelegateExpression: FirWrappedDelegateExpression, wrappedDelegateExpression: FirWrappedDelegateExpression,
data: ResolutionMode, data: ResolutionMode,