diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/FirLazyBodiesCalculator.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/FirLazyBodiesCalculator.kt index 52baec47bf3..45d25cf8baf 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/FirLazyBodiesCalculator.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/FirLazyBodiesCalculator.kt @@ -17,7 +17,6 @@ import org.jetbrains.kotlin.fir.builder.PsiRawFirBuilder import org.jetbrains.kotlin.fir.contracts.FirRawContractDescription import org.jetbrains.kotlin.fir.contracts.impl.FirEmptyContractDescription import org.jetbrains.kotlin.fir.declarations.* -import org.jetbrains.kotlin.fir.declarations.annotationPlatformSupport import org.jetbrains.kotlin.fir.declarations.utils.getExplicitBackingField import org.jetbrains.kotlin.fir.expressions.* import org.jetbrains.kotlin.fir.expressions.impl.FirLazyDelegatedConstructorCall @@ -243,16 +242,7 @@ private fun rebindDelegate(newTarget: FirProperty, oldTarget: FirProperty) { withFirEntry("delegate", delegate) } - val delegateProvider = delegate.delegateProvider - requireWithAttachment( - delegateProvider is FirFunctionCall, - { "Unexpected delegate provider type: ${delegateProvider::class.simpleName}" }, - ) { - withFirEntry("newTarget", newTarget) - withFirEntry("oldTarget", oldTarget) - withFirEntry("expression", delegateProvider) - } - + val delegateProvider = delegate.provideDelegateCall rebindArgumentList( delegateProvider.argumentList, newTarget = newTarget.symbol, diff --git a/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/ConversionUtils.kt b/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/ConversionUtils.kt index 9776ed7d034..5c3e1aa7413 100644 --- a/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/ConversionUtils.kt +++ b/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/ConversionUtils.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.builder import com.intellij.psi.tree.IElementType -import org.jetbrains.kotlin.* import org.jetbrains.kotlin.KtFakeSourceElementKind import org.jetbrains.kotlin.KtRealSourceElementKind import org.jetbrains.kotlin.KtSourceElement @@ -14,15 +13,12 @@ import org.jetbrains.kotlin.contracts.description.LogicOperationKind import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget +import org.jetbrains.kotlin.fakeElement import org.jetbrains.kotlin.fir.* import org.jetbrains.kotlin.fir.contracts.FirContractDescription import org.jetbrains.kotlin.fir.contracts.FirLegacyRawContractDescription import org.jetbrains.kotlin.fir.contracts.builder.buildLegacyRawContractDescription -import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration -import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin -import org.jetbrains.kotlin.fir.declarations.FirFunction -import org.jetbrains.kotlin.fir.declarations.FirReceiverParameter -import org.jetbrains.kotlin.fir.declarations.FirVariable +import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.builder.* import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyAccessor @@ -41,16 +37,9 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirPropertyAccessorSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol -import org.jetbrains.kotlin.fir.types.ConeClassLikeType -import org.jetbrains.kotlin.fir.types.ConeKotlinTypeProjectionOut -import org.jetbrains.kotlin.fir.types.ConeStarProjection -import org.jetbrains.kotlin.fir.types.FirErrorTypeRef -import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef -import org.jetbrains.kotlin.fir.types.FirTypeRef +import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef import org.jetbrains.kotlin.fir.types.builder.buildTypeProjectionWithVariance -import org.jetbrains.kotlin.fir.types.coneType -import org.jetbrains.kotlin.fir.types.constructClassLikeType import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImplWithoutSource import org.jetbrains.kotlin.lexer.KtTokens @@ -431,7 +420,7 @@ fun FirPropertyBuilder.generateAccessorsByDelegate( } delegate = lazyDelegateExpression ?: run { - delegateBuilder.delegateProvider = buildFunctionCall { + delegateBuilder.provideDelegateCall = buildFunctionCall { explicitReceiver = delegateBuilder.expression calleeReference = buildSimpleNamedReference { source = fakeSource diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt index ee21c510ade..fab1578e985 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt @@ -404,7 +404,7 @@ open class FirDeclarationsResolveTransformer( val delegateExpression = wrappedDelegateExpression.expression.transformSingle(transformer, ResolutionMode.ContextDependent.Delegate) .transformSingle(components.integerLiteralAndOperatorApproximationTransformer, null) - val provideDelegateCall = wrappedDelegateExpression.delegateProvider as FirFunctionCall + val provideDelegateCall = wrappedDelegateExpression.provideDelegateCall provideDelegateCall.replaceExplicitReceiver(delegateExpression) // Resolve call for provideDelegate, without completion diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWrappedDelegateExpression.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWrappedDelegateExpression.kt index 5bf2da9fad2..d83fabd67be 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWrappedDelegateExpression.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWrappedDelegateExpression.kt @@ -23,7 +23,7 @@ abstract class FirWrappedDelegateExpression : FirWrappedExpression() { abstract override val coneTypeOrNull: ConeKotlinType? abstract override val annotations: List abstract override val expression: FirExpression - abstract val delegateProvider: FirExpression + abstract val provideDelegateCall: FirFunctionCall override fun accept(visitor: FirVisitor, data: D): R = visitor.visitWrappedDelegateExpression(this, data) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirWrappedDelegateExpressionBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirWrappedDelegateExpressionBuilder.kt index de1aef6c894..5449dc9317d 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirWrappedDelegateExpressionBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirWrappedDelegateExpressionBuilder.kt @@ -17,6 +17,7 @@ import org.jetbrains.kotlin.fir.builder.FirBuilderDsl import org.jetbrains.kotlin.fir.builder.toMutableOrEmpty import org.jetbrains.kotlin.fir.expressions.FirAnnotation import org.jetbrains.kotlin.fir.expressions.FirExpression +import org.jetbrains.kotlin.fir.expressions.FirFunctionCall import org.jetbrains.kotlin.fir.expressions.FirWrappedDelegateExpression import org.jetbrains.kotlin.fir.expressions.impl.FirWrappedDelegateExpressionImpl import org.jetbrains.kotlin.fir.types.ConeKotlinType @@ -26,14 +27,14 @@ class FirWrappedDelegateExpressionBuilder : FirAnnotationContainerBuilder, FirEx override var source: KtSourceElement? = null override val annotations: MutableList = mutableListOf() lateinit var expression: FirExpression - lateinit var delegateProvider: FirExpression + lateinit var provideDelegateCall: FirFunctionCall override fun build(): FirWrappedDelegateExpression { return FirWrappedDelegateExpressionImpl( source, annotations.toMutableOrEmpty(), expression, - delegateProvider, + provideDelegateCall, ) } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirWrappedDelegateExpressionImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirWrappedDelegateExpressionImpl.kt index 6d6debb5701..03feb7ab08c 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirWrappedDelegateExpressionImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirWrappedDelegateExpressionImpl.kt @@ -13,10 +13,7 @@ package org.jetbrains.kotlin.fir.expressions.impl import org.jetbrains.kotlin.KtSourceElement import org.jetbrains.kotlin.fir.MutableOrEmptyList import org.jetbrains.kotlin.fir.builder.toMutableOrEmpty -import org.jetbrains.kotlin.fir.expressions.FirAnnotation -import org.jetbrains.kotlin.fir.expressions.FirExpression -import org.jetbrains.kotlin.fir.expressions.FirWrappedDelegateExpression -import org.jetbrains.kotlin.fir.expressions.UnresolvedExpressionTypeAccess +import org.jetbrains.kotlin.fir.expressions.* import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.visitors.FirTransformer import org.jetbrains.kotlin.fir.visitors.FirVisitor @@ -26,7 +23,7 @@ internal class FirWrappedDelegateExpressionImpl( override val source: KtSourceElement?, override var annotations: MutableOrEmptyList, override var expression: FirExpression, - override var delegateProvider: FirExpression, + override var provideDelegateCall: FirFunctionCall, ) : FirWrappedDelegateExpression() { @OptIn(UnresolvedExpressionTypeAccess::class) override val coneTypeOrNull: ConeKotlinType? @@ -35,13 +32,13 @@ internal class FirWrappedDelegateExpressionImpl( override fun acceptChildren(visitor: FirVisitor, data: D) { annotations.forEach { it.accept(visitor, data) } expression.accept(visitor, data) - delegateProvider.accept(visitor, data) + provideDelegateCall.accept(visitor, data) } override fun transformChildren(transformer: FirTransformer, data: D): FirWrappedDelegateExpressionImpl { transformAnnotations(transformer, data) expression = expression.transform(transformer, data) - delegateProvider = delegateProvider.transform(transformer, data) + provideDelegateCall = provideDelegateCall.transform(transformer, data) return this } diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt index ee824bd9f7b..366e148ae5f 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt @@ -665,7 +665,7 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild } wrappedDelegateExpression.configure { - +field("delegateProvider", expression) + +field("provideDelegateCall", functionCall) } enumEntryDeserializedAccessExpression.configure {