K2: use MutableOrEmptyList for context receivers

This commit is contained in:
Mikhail Glukhikh
2022-12-15 10:43:57 +01:00
committed by Space Team
parent dff71a9602
commit ddc786364f
20 changed files with 29 additions and 39 deletions
@@ -50,7 +50,7 @@ class FirCallableReferenceAccessBuilder : FirQualifiedAccessBuilder, FirAnnotati
source, source,
typeRef, typeRef,
annotations.toMutableOrEmpty(), annotations.toMutableOrEmpty(),
contextReceiverArguments, contextReceiverArguments.toMutableOrEmpty(),
typeArguments, typeArguments,
explicitReceiver, explicitReceiver,
dispatchReceiver, dispatchReceiver,
@@ -53,7 +53,7 @@ class FirComponentCallBuilder : FirCallBuilder, FirAnnotationContainerBuilder, F
return FirComponentCallImpl( return FirComponentCallImpl(
source, source,
annotations.toMutableOrEmpty(), annotations.toMutableOrEmpty(),
contextReceiverArguments, contextReceiverArguments.toMutableOrEmpty(),
typeArguments, typeArguments,
dispatchReceiver, dispatchReceiver,
extensionReceiver, extensionReceiver,
@@ -47,7 +47,7 @@ class FirDelegatedConstructorCallBuilder : FirCallBuilder, FirAnnotationContaine
source, source,
annotations.toMutableOrEmpty(), annotations.toMutableOrEmpty(),
argumentList, argumentList,
contextReceiverArguments, contextReceiverArguments.toMutableOrEmpty(),
constructedTypeRef, constructedTypeRef,
dispatchReceiver, dispatchReceiver,
calleeReference, calleeReference,
@@ -55,7 +55,7 @@ open class FirFunctionCallBuilder : FirAbstractFunctionCallBuilder, FirAnnotatio
source, source,
typeRef, typeRef,
annotations.toMutableOrEmpty(), annotations.toMutableOrEmpty(),
contextReceiverArguments, contextReceiverArguments.toMutableOrEmpty(),
typeArguments, typeArguments,
explicitReceiver, explicitReceiver,
dispatchReceiver, dispatchReceiver,
@@ -51,7 +51,7 @@ open class FirImplicitInvokeCallBuilder : FirAbstractFunctionCallBuilder, FirAnn
return FirImplicitInvokeCallImpl( return FirImplicitInvokeCallImpl(
source, source,
annotations.toMutableOrEmpty(), annotations.toMutableOrEmpty(),
contextReceiverArguments, contextReceiverArguments.toMutableOrEmpty(),
typeArguments, typeArguments,
explicitReceiver, explicitReceiver,
dispatchReceiver, dispatchReceiver,
@@ -53,7 +53,7 @@ open class FirIntegerLiteralOperatorCallBuilder : FirAbstractFunctionCallBuilder
source, source,
typeRef, typeRef,
annotations.toMutableOrEmpty(), annotations.toMutableOrEmpty(),
contextReceiverArguments, contextReceiverArguments.toMutableOrEmpty(),
typeArguments, typeArguments,
explicitReceiver, explicitReceiver,
argumentList, argumentList,
@@ -52,7 +52,7 @@ class FirPropertyAccessExpressionBuilder : FirQualifiedAccessBuilder, FirAnnotat
typeRef, typeRef,
annotations.toMutableOrEmpty(), annotations.toMutableOrEmpty(),
calleeReference, calleeReference,
contextReceiverArguments, contextReceiverArguments.toMutableOrEmpty(),
typeArguments, typeArguments,
explicitReceiver, explicitReceiver,
dispatchReceiver, dispatchReceiver,
@@ -47,7 +47,7 @@ class FirThisReceiverExpressionBuilder : FirQualifiedAccessBuilder, FirAnnotatio
source, source,
typeRef, typeRef,
annotations.toMutableOrEmpty(), annotations.toMutableOrEmpty(),
contextReceiverArguments, contextReceiverArguments.toMutableOrEmpty(),
typeArguments, typeArguments,
calleeReference, calleeReference,
isImplicit, isImplicit,
@@ -46,7 +46,7 @@ class FirVariableAssignmentBuilder : FirQualifiedAccessBuilder, FirAnnotationCon
return FirVariableAssignmentImpl( return FirVariableAssignmentImpl(
calleeReference, calleeReference,
annotations.toMutableOrEmpty(), annotations.toMutableOrEmpty(),
contextReceiverArguments, contextReceiverArguments.toMutableOrEmpty(),
typeArguments, typeArguments,
explicitReceiver, explicitReceiver,
dispatchReceiver, dispatchReceiver,
@@ -29,7 +29,7 @@ internal class FirCallableReferenceAccessImpl(
override var source: KtSourceElement?, override var source: KtSourceElement?,
override var typeRef: FirTypeRef, override var typeRef: FirTypeRef,
override var annotations: MutableOrEmptyList<FirAnnotation>, override var annotations: MutableOrEmptyList<FirAnnotation>,
override val contextReceiverArguments: MutableList<FirExpression>, override var contextReceiverArguments: MutableOrEmptyList<FirExpression>,
override val typeArguments: MutableList<FirTypeProjection>, override val typeArguments: MutableList<FirTypeProjection>,
override var explicitReceiver: FirExpression?, override var explicitReceiver: FirExpression?,
override var dispatchReceiver: FirExpression, override var dispatchReceiver: FirExpression,
@@ -102,8 +102,7 @@ internal class FirCallableReferenceAccessImpl(
} }
override fun replaceContextReceiverArguments(newContextReceiverArguments: List<FirExpression>) { override fun replaceContextReceiverArguments(newContextReceiverArguments: List<FirExpression>) {
contextReceiverArguments.clear() contextReceiverArguments = newContextReceiverArguments.toMutableOrEmpty()
contextReceiverArguments.addAll(newContextReceiverArguments)
} }
override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>) { override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>) {
@@ -34,7 +34,7 @@ import org.jetbrains.kotlin.fir.builder.toMutableOrEmpty
internal class FirComponentCallImpl( internal class FirComponentCallImpl(
override var source: KtSourceElement?, override var source: KtSourceElement?,
override var annotations: MutableOrEmptyList<FirAnnotation>, override var annotations: MutableOrEmptyList<FirAnnotation>,
override val contextReceiverArguments: MutableList<FirExpression>, override var contextReceiverArguments: MutableOrEmptyList<FirExpression>,
override val typeArguments: MutableList<FirTypeProjection>, override val typeArguments: MutableList<FirTypeProjection>,
override var dispatchReceiver: FirExpression, override var dispatchReceiver: FirExpression,
override var extensionReceiver: FirExpression, override var extensionReceiver: FirExpression,
@@ -113,8 +113,7 @@ internal class FirComponentCallImpl(
} }
override fun replaceContextReceiverArguments(newContextReceiverArguments: List<FirExpression>) { override fun replaceContextReceiverArguments(newContextReceiverArguments: List<FirExpression>) {
contextReceiverArguments.clear() contextReceiverArguments = newContextReceiverArguments.toMutableOrEmpty()
contextReceiverArguments.addAll(newContextReceiverArguments)
} }
override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>) { override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>) {
@@ -29,7 +29,7 @@ internal class FirDelegatedConstructorCallImpl(
override val source: KtSourceElement?, override val source: KtSourceElement?,
override var annotations: MutableOrEmptyList<FirAnnotation>, override var annotations: MutableOrEmptyList<FirAnnotation>,
override var argumentList: FirArgumentList, override var argumentList: FirArgumentList,
override val contextReceiverArguments: MutableList<FirExpression>, override var contextReceiverArguments: MutableOrEmptyList<FirExpression>,
override var constructedTypeRef: FirTypeRef, override var constructedTypeRef: FirTypeRef,
override var dispatchReceiver: FirExpression, override var dispatchReceiver: FirExpression,
override var calleeReference: FirReference, override var calleeReference: FirReference,
@@ -78,8 +78,7 @@ internal class FirDelegatedConstructorCallImpl(
} }
override fun replaceContextReceiverArguments(newContextReceiverArguments: List<FirExpression>) { override fun replaceContextReceiverArguments(newContextReceiverArguments: List<FirExpression>) {
contextReceiverArguments.clear() contextReceiverArguments = newContextReceiverArguments.toMutableOrEmpty()
contextReceiverArguments.addAll(newContextReceiverArguments)
} }
override fun replaceConstructedTypeRef(newConstructedTypeRef: FirTypeRef) { override fun replaceConstructedTypeRef(newConstructedTypeRef: FirTypeRef) {
@@ -31,7 +31,7 @@ open class FirFunctionCallImpl @FirImplementationDetail constructor(
override var source: KtSourceElement?, override var source: KtSourceElement?,
override var typeRef: FirTypeRef, override var typeRef: FirTypeRef,
override var annotations: MutableOrEmptyList<FirAnnotation>, override var annotations: MutableOrEmptyList<FirAnnotation>,
override val contextReceiverArguments: MutableList<FirExpression>, override var contextReceiverArguments: MutableOrEmptyList<FirExpression>,
override val typeArguments: MutableList<FirTypeProjection>, override val typeArguments: MutableList<FirTypeProjection>,
override var explicitReceiver: FirExpression?, override var explicitReceiver: FirExpression?,
override var dispatchReceiver: FirExpression, override var dispatchReceiver: FirExpression,
@@ -107,8 +107,7 @@ open class FirFunctionCallImpl @FirImplementationDetail constructor(
} }
override fun replaceContextReceiverArguments(newContextReceiverArguments: List<FirExpression>) { override fun replaceContextReceiverArguments(newContextReceiverArguments: List<FirExpression>) {
contextReceiverArguments.clear() contextReceiverArguments = newContextReceiverArguments.toMutableOrEmpty()
contextReceiverArguments.addAll(newContextReceiverArguments)
} }
override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>) { override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>) {
@@ -31,7 +31,7 @@ import org.jetbrains.kotlin.fir.FirImplementationDetail
internal class FirImplicitInvokeCallImpl( internal class FirImplicitInvokeCallImpl(
override var source: KtSourceElement?, override var source: KtSourceElement?,
override var annotations: MutableOrEmptyList<FirAnnotation>, override var annotations: MutableOrEmptyList<FirAnnotation>,
override val contextReceiverArguments: MutableList<FirExpression>, override var contextReceiverArguments: MutableOrEmptyList<FirExpression>,
override val typeArguments: MutableList<FirTypeProjection>, override val typeArguments: MutableList<FirTypeProjection>,
override var explicitReceiver: FirExpression?, override var explicitReceiver: FirExpression?,
override var dispatchReceiver: FirExpression, override var dispatchReceiver: FirExpression,
@@ -109,8 +109,7 @@ internal class FirImplicitInvokeCallImpl(
} }
override fun replaceContextReceiverArguments(newContextReceiverArguments: List<FirExpression>) { override fun replaceContextReceiverArguments(newContextReceiverArguments: List<FirExpression>) {
contextReceiverArguments.clear() contextReceiverArguments = newContextReceiverArguments.toMutableOrEmpty()
contextReceiverArguments.addAll(newContextReceiverArguments)
} }
override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>) { override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>) {
@@ -31,7 +31,7 @@ internal class FirIntegerLiteralOperatorCallImpl(
override var source: KtSourceElement?, override var source: KtSourceElement?,
override var typeRef: FirTypeRef, override var typeRef: FirTypeRef,
override var annotations: MutableOrEmptyList<FirAnnotation>, override var annotations: MutableOrEmptyList<FirAnnotation>,
override val contextReceiverArguments: MutableList<FirExpression>, override var contextReceiverArguments: MutableOrEmptyList<FirExpression>,
override val typeArguments: MutableList<FirTypeProjection>, override val typeArguments: MutableList<FirTypeProjection>,
override var explicitReceiver: FirExpression?, override var explicitReceiver: FirExpression?,
override var argumentList: FirArgumentList, override var argumentList: FirArgumentList,
@@ -117,8 +117,7 @@ internal class FirIntegerLiteralOperatorCallImpl(
} }
override fun replaceContextReceiverArguments(newContextReceiverArguments: List<FirExpression>) { override fun replaceContextReceiverArguments(newContextReceiverArguments: List<FirExpression>) {
contextReceiverArguments.clear() contextReceiverArguments = newContextReceiverArguments.toMutableOrEmpty()
contextReceiverArguments.addAll(newContextReceiverArguments)
} }
override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>) { override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>) {
@@ -30,7 +30,7 @@ class FirPropertyAccessExpressionImpl @FirImplementationDetail constructor(
override var typeRef: FirTypeRef, override var typeRef: FirTypeRef,
override var annotations: MutableOrEmptyList<FirAnnotation>, override var annotations: MutableOrEmptyList<FirAnnotation>,
override var calleeReference: FirReference, override var calleeReference: FirReference,
override val contextReceiverArguments: MutableList<FirExpression>, override var contextReceiverArguments: MutableOrEmptyList<FirExpression>,
override val typeArguments: MutableList<FirTypeProjection>, override val typeArguments: MutableList<FirTypeProjection>,
override var explicitReceiver: FirExpression?, override var explicitReceiver: FirExpression?,
override var dispatchReceiver: FirExpression, override var dispatchReceiver: FirExpression,
@@ -106,8 +106,7 @@ class FirPropertyAccessExpressionImpl @FirImplementationDetail constructor(
} }
override fun replaceContextReceiverArguments(newContextReceiverArguments: List<FirExpression>) { override fun replaceContextReceiverArguments(newContextReceiverArguments: List<FirExpression>) {
contextReceiverArguments.clear() contextReceiverArguments = newContextReceiverArguments.toMutableOrEmpty()
contextReceiverArguments.addAll(newContextReceiverArguments)
} }
override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>) { override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>) {
@@ -30,7 +30,7 @@ internal class FirThisReceiverExpressionImpl(
override var source: KtSourceElement?, override var source: KtSourceElement?,
override var typeRef: FirTypeRef, override var typeRef: FirTypeRef,
override var annotations: MutableOrEmptyList<FirAnnotation>, override var annotations: MutableOrEmptyList<FirAnnotation>,
override val contextReceiverArguments: MutableList<FirExpression>, override var contextReceiverArguments: MutableOrEmptyList<FirExpression>,
override val typeArguments: MutableList<FirTypeProjection>, override val typeArguments: MutableList<FirTypeProjection>,
override var calleeReference: FirThisReference, override var calleeReference: FirThisReference,
override val isImplicit: Boolean, override val isImplicit: Boolean,
@@ -104,8 +104,7 @@ internal class FirThisReceiverExpressionImpl(
} }
override fun replaceContextReceiverArguments(newContextReceiverArguments: List<FirExpression>) { override fun replaceContextReceiverArguments(newContextReceiverArguments: List<FirExpression>) {
contextReceiverArguments.clear() contextReceiverArguments = newContextReceiverArguments.toMutableOrEmpty()
contextReceiverArguments.addAll(newContextReceiverArguments)
} }
override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>) { override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>) {
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.fir.FirImplementationDetail
internal class FirVariableAssignmentImpl( internal class FirVariableAssignmentImpl(
override var calleeReference: FirReference, override var calleeReference: FirReference,
override var annotations: MutableOrEmptyList<FirAnnotation>, override var annotations: MutableOrEmptyList<FirAnnotation>,
override val contextReceiverArguments: MutableList<FirExpression>, override var contextReceiverArguments: MutableOrEmptyList<FirExpression>,
override val typeArguments: MutableList<FirTypeProjection>, override val typeArguments: MutableList<FirTypeProjection>,
override var explicitReceiver: FirExpression?, override var explicitReceiver: FirExpression?,
override var dispatchReceiver: FirExpression, override var dispatchReceiver: FirExpression,
@@ -110,8 +110,7 @@ internal class FirVariableAssignmentImpl(
} }
override fun replaceContextReceiverArguments(newContextReceiverArguments: List<FirExpression>) { override fun replaceContextReceiverArguments(newContextReceiverArguments: List<FirExpression>) {
contextReceiverArguments.clear() contextReceiverArguments = newContextReceiverArguments.toMutableOrEmpty()
contextReceiverArguments.addAll(newContextReceiverArguments)
} }
override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>) { override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>) {
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.fir.visitors
import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirPureAbstractElement
import org.jetbrains.kotlin.fir.MutableOrEmptyList import org.jetbrains.kotlin.fir.MutableOrEmptyList
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
fun <T : FirElement, D> T.transformSingle(transformer: FirTransformer<D>, data: D): T { fun <T : FirElement, D> T.transformSingle(transformer: FirTransformer<D>, data: D): T {
return (this as FirPureAbstractElement).transform<T, D>(transformer, data) return (this as FirPureAbstractElement).transform<T, D>(transformer, data)
@@ -25,7 +24,7 @@ fun <T : FirElement, D> MutableList<T>.transformInplace(transformer: FirTransfor
} }
} }
fun <T : FirAnnotation, D> MutableOrEmptyList<T>.transformInplace(transformer: FirTransformer<D>, data: D) { fun <T : FirElement, D> MutableOrEmptyList<T>.transformInplace(transformer: FirTransformer<D>, data: D) {
list?.transformInplace(transformer, data) list?.transformInplace(transformer, data)
} }
@@ -202,7 +202,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
} }
contextReceiverArgumentListOwner.configure { contextReceiverArgumentListOwner.configure {
+fieldList("contextReceiverArguments", expression, withReplace = true) +fieldList("contextReceiverArguments", expression, useMutableOrEmpty = true, withReplace = true)
} }
qualifiedAccess.configure { qualifiedAccess.configure {