[LL FIR] fix lazy resolve of accessors generated by delegation

Before the change, such accessors would have implicit types event if the corresponding property had a resolved one
This commit is contained in:
Ilya Kirillov
2022-08-09 10:32:16 +02:00
parent e12a800b2d
commit 97853016d5
@@ -126,8 +126,11 @@ open class FirTypeResolveTransformer(
.transformAnnotations(this, data) .transformAnnotations(this, data)
if (property.isFromVararg == true) { if (property.isFromVararg == true) {
property.transformTypeToArrayType() property.transformTypeToArrayType()
property.getter?.transformReturnTypeRef(StoreType, property.returnTypeRef) setAccessorTypesByPropertyType(property)
property.setter?.valueParameters?.map { it.transformReturnTypeRef(StoreType, property.returnTypeRef) } }
if (property.returnTypeRef is FirResolvedTypeRef && property.delegate != null) {
setAccessorTypesByPropertyType(property)
} }
unboundCyclesInTypeParametersSupertypes(property) unboundCyclesInTypeParametersSupertypes(property)
@@ -136,6 +139,11 @@ open class FirTypeResolveTransformer(
} }
} }
private fun setAccessorTypesByPropertyType(property: FirProperty) {
property.getter?.transformReturnTypeRef(StoreType, property.returnTypeRef)
property.setter?.valueParameters?.map { it.transformReturnTypeRef(StoreType, property.returnTypeRef) }
}
override fun transformField(field: FirField, data: Any?): FirField { override fun transformField(field: FirField, data: Any?): FirField {
return withScopeCleanup { return withScopeCleanup {
field.transformReturnTypeRef(this, data).transformAnnotations(this, data) field.transformReturnTypeRef(this, data).transformAnnotations(this, data)