[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:
+10
-2
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user