[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 as? FirCallableDeclaration)?.status?.visibility == Visibilities.Local) return null
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()
if (klass.classId.isLocal) return null
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.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<PersistentLis
}
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
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)
}
@@ -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?
@@ -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
@@ -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,