From 97853016d5f67359fd98ae044df4280ffc8c8424 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Tue, 9 Aug 2022 10:32:16 +0200 Subject: [PATCH] [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 --- .../transformers/FirTypeResolveTransformer.kt | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt index 36af9418021..1ca004e0f8d 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt @@ -126,8 +126,11 @@ open class FirTypeResolveTransformer( .transformAnnotations(this, data) if (property.isFromVararg == true) { property.transformTypeToArrayType() - property.getter?.transformReturnTypeRef(StoreType, property.returnTypeRef) - property.setter?.valueParameters?.map { it.transformReturnTypeRef(StoreType, property.returnTypeRef) } + setAccessorTypesByPropertyType(property) + } + + if (property.returnTypeRef is FirResolvedTypeRef && property.delegate != null) { + setAccessorTypesByPropertyType(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 { return withScopeCleanup { field.transformReturnTypeRef(this, data).transformAnnotations(this, data)