K2: Rename delegateProvider in node for delegate and refine its type
This commit is contained in:
committed by
Space Team
parent
ca9372cfa0
commit
f8fd46a5b8
+1
-11
@@ -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,
|
||||
|
||||
+4
-15
@@ -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 <T> FirPropertyBuilder.generateAccessorsByDelegate(
|
||||
}
|
||||
|
||||
delegate = lazyDelegateExpression ?: run {
|
||||
delegateBuilder.delegateProvider = buildFunctionCall {
|
||||
delegateBuilder.provideDelegateCall = buildFunctionCall {
|
||||
explicitReceiver = delegateBuilder.expression
|
||||
calleeReference = buildSimpleNamedReference {
|
||||
source = fakeSource
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@ abstract class FirWrappedDelegateExpression : FirWrappedExpression() {
|
||||
abstract override val coneTypeOrNull: ConeKotlinType?
|
||||
abstract override val annotations: List<FirAnnotation>
|
||||
abstract override val expression: FirExpression
|
||||
abstract val delegateProvider: FirExpression
|
||||
abstract val provideDelegateCall: FirFunctionCall
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||
visitor.visitWrappedDelegateExpression(this, data)
|
||||
|
||||
+3
-2
@@ -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<FirAnnotation> = 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,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+4
-7
@@ -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<FirAnnotation>,
|
||||
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 <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||
annotations.forEach { it.accept(visitor, data) }
|
||||
expression.accept(visitor, data)
|
||||
delegateProvider.accept(visitor, data)
|
||||
provideDelegateCall.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirWrappedDelegateExpressionImpl {
|
||||
transformAnnotations(transformer, data)
|
||||
expression = expression.transform(transformer, data)
|
||||
delegateProvider = delegateProvider.transform(transformer, data)
|
||||
provideDelegateCall = provideDelegateCall.transform(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -665,7 +665,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
}
|
||||
|
||||
wrappedDelegateExpression.configure {
|
||||
+field("delegateProvider", expression)
|
||||
+field("provideDelegateCall", functionCall)
|
||||
}
|
||||
|
||||
enumEntryDeserializedAccessExpression.configure {
|
||||
|
||||
Reference in New Issue
Block a user