K2: use MutableOrEmptyList for context receivers on declaration site

This commit is contained in:
Mikhail Glukhikh
2022-12-15 12:07:10 +01:00
committed by Space Team
parent d20d63786b
commit e9fbeb9be2
34 changed files with 52 additions and 64 deletions
@@ -82,7 +82,7 @@ class FirAnonymousFunctionBuilder : FirFunctionBuilder, FirAnnotationContainerBu
deprecationsProvider,
containerSource,
dispatchReceiverType,
contextReceivers,
contextReceivers.toMutableOrEmpty(),
controlFlowGraphReference,
valueParameters,
body,
@@ -81,7 +81,7 @@ class FirBackingFieldBuilder : FirAnnotationContainerBuilder {
deprecationsProvider,
containerSource,
dispatchReceiverType,
contextReceivers,
contextReceivers.toMutableOrEmpty(),
name,
delegate,
isVar,
@@ -76,7 +76,7 @@ open class FirConstructorBuilder : FirAbstractConstructorBuilder, FirAnnotationC
deprecationsProvider,
containerSource,
dispatchReceiverType,
contextReceivers,
contextReceivers.toMutableOrEmpty(),
valueParameters,
annotations.toMutableOrEmpty(),
symbol,
@@ -83,7 +83,7 @@ class FirDefaultSetterValueParameterBuilder : FirAnnotationContainerBuilder {
deprecationsProvider,
containerSource,
dispatchReceiverType,
contextReceivers,
contextReceivers.toMutableOrEmpty(),
initializer,
delegate,
isVar,
@@ -73,7 +73,7 @@ class FirEnumEntryBuilder : FirAnnotationContainerBuilder {
deprecationsProvider,
containerSource,
dispatchReceiverType,
contextReceivers,
contextReceivers.toMutableOrEmpty(),
name,
initializer,
backingField,
@@ -69,7 +69,7 @@ class FirErrorFunctionBuilder : FirAnnotationContainerBuilder {
deprecationsProvider,
containerSource,
dispatchReceiverType,
contextReceivers,
contextReceivers.toMutableOrEmpty(),
valueParameters,
diagnostic,
symbol,
@@ -70,7 +70,7 @@ class FirErrorPropertyBuilder : FirAnnotationContainerBuilder {
deprecationsProvider,
containerSource,
dispatchReceiverType,
contextReceivers,
contextReceivers.toMutableOrEmpty(),
name,
backingField,
annotations.toMutableOrEmpty(),
@@ -78,7 +78,7 @@ open class FirFieldBuilder : FirDeclarationBuilder, FirAnnotationContainerBuilde
deprecationsProvider,
containerSource,
dispatchReceiverType,
contextReceivers,
contextReceivers.toMutableOrEmpty(),
name,
initializer,
isVar,
@@ -78,7 +78,7 @@ class FirPrimaryConstructorBuilder : FirAbstractConstructorBuilder, FirAnnotatio
deprecationsProvider,
containerSource,
dispatchReceiverType,
contextReceivers,
contextReceivers.toMutableOrEmpty(),
valueParameters,
annotations.toMutableOrEmpty(),
symbol,
@@ -80,7 +80,7 @@ class FirPropertyAccessorBuilder : FirFunctionBuilder, FirAnnotationContainerBui
deprecationsProvider,
containerSource,
dispatchReceiverType,
contextReceivers,
contextReceivers.toMutableOrEmpty(),
valueParameters,
body,
contractDescription,
@@ -95,7 +95,7 @@ class FirPropertyBuilder : FirDeclarationBuilder, FirTypeParametersOwnerBuilder,
setter,
backingField,
annotations.toMutableOrEmpty(),
contextReceivers,
contextReceivers.toMutableOrEmpty(),
symbol,
delegateFieldSymbol,
isLocal,
@@ -78,7 +78,7 @@ open class FirRegularClassBuilder : FirClassBuilder, FirTypeParameterRefsOwnerBu
symbol,
companionObjectSymbol,
superTypeRefs,
contextReceivers,
contextReceivers.toMutableOrEmpty(),
)
}
@@ -54,7 +54,7 @@ class FirScriptBuilder : FirAnnotationContainerBuilder {
name,
statements,
symbol,
contextReceivers,
contextReceivers.toMutableOrEmpty(),
)
}
@@ -79,7 +79,7 @@ open class FirSimpleFunctionBuilder : FirFunctionBuilder, FirTypeParametersOwner
deprecationsProvider,
containerSource,
dispatchReceiverType,
contextReceivers,
contextReceivers.toMutableOrEmpty(),
valueParameters,
body,
contractDescription,
@@ -76,7 +76,7 @@ open class FirValueParameterBuilder : FirAnnotationContainerBuilder {
deprecationsProvider,
containerSource,
dispatchReceiverType,
contextReceivers,
contextReceivers.toMutableOrEmpty(),
name,
backingField,
annotations.toMutableOrEmpty(),
@@ -50,7 +50,7 @@ internal class FirAnonymousFunctionImpl(
override var deprecationsProvider: DeprecationsProvider,
override val containerSource: DeserializedContainerSource?,
override val dispatchReceiverType: ConeSimpleKotlinType?,
override val contextReceivers: MutableList<FirContextReceiver>,
override var contextReceivers: MutableOrEmptyList<FirContextReceiver>,
override var controlFlowGraphReference: FirControlFlowGraphReference?,
override val valueParameters: MutableList<FirValueParameter>,
override var body: FirBlock?,
@@ -156,8 +156,7 @@ internal class FirAnonymousFunctionImpl(
}
override fun replaceContextReceivers(newContextReceivers: List<FirContextReceiver>) {
contextReceivers.clear()
contextReceivers.addAll(newContextReceivers)
contextReceivers = newContextReceivers.toMutableOrEmpty()
}
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
@@ -49,7 +49,7 @@ open class FirBackingFieldImpl @FirImplementationDetail constructor(
override var deprecationsProvider: DeprecationsProvider,
override val containerSource: DeserializedContainerSource?,
override val dispatchReceiverType: ConeSimpleKotlinType?,
override val contextReceivers: MutableList<FirContextReceiver>,
override var contextReceivers: MutableOrEmptyList<FirContextReceiver>,
override val name: Name,
override var delegate: FirExpression?,
override val isVar: Boolean,
@@ -169,8 +169,7 @@ open class FirBackingFieldImpl @FirImplementationDetail constructor(
}
override fun replaceContextReceivers(newContextReceivers: List<FirContextReceiver>) {
contextReceivers.clear()
contextReceivers.addAll(newContextReceivers)
contextReceivers = newContextReceivers.toMutableOrEmpty()
}
override fun replaceGetter(newGetter: FirPropertyAccessor?) {
@@ -50,7 +50,7 @@ internal class FirConstructorImpl(
override var deprecationsProvider: DeprecationsProvider,
override val containerSource: DeserializedContainerSource?,
override val dispatchReceiverType: ConeSimpleKotlinType?,
override val contextReceivers: MutableList<FirContextReceiver>,
override var contextReceivers: MutableOrEmptyList<FirContextReceiver>,
override val valueParameters: MutableList<FirValueParameter>,
override var annotations: MutableOrEmptyList<FirAnnotation>,
override val symbol: FirConstructorSymbol,
@@ -148,8 +148,7 @@ internal class FirConstructorImpl(
}
override fun replaceContextReceivers(newContextReceivers: List<FirContextReceiver>) {
contextReceivers.clear()
contextReceivers.addAll(newContextReceivers)
contextReceivers = newContextReceivers.toMutableOrEmpty()
}
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
@@ -51,7 +51,7 @@ internal class FirDefaultSetterValueParameter(
override var deprecationsProvider: DeprecationsProvider,
override val containerSource: DeserializedContainerSource?,
override val dispatchReceiverType: ConeSimpleKotlinType?,
override val contextReceivers: MutableList<FirContextReceiver>,
override var contextReceivers: MutableOrEmptyList<FirContextReceiver>,
override var initializer: FirExpression?,
override var delegate: FirExpression?,
override val isVar: Boolean,
@@ -178,8 +178,7 @@ internal class FirDefaultSetterValueParameter(
}
override fun replaceContextReceivers(newContextReceivers: List<FirContextReceiver>) {
contextReceivers.clear()
contextReceivers.addAll(newContextReceivers)
contextReceivers = newContextReceivers.toMutableOrEmpty()
}
override fun replaceInitializer(newInitializer: FirExpression?) {
@@ -49,7 +49,7 @@ internal class FirEnumEntryImpl(
override var deprecationsProvider: DeprecationsProvider,
override val containerSource: DeserializedContainerSource?,
override val dispatchReceiverType: ConeSimpleKotlinType?,
override val contextReceivers: MutableList<FirContextReceiver>,
override var contextReceivers: MutableOrEmptyList<FirContextReceiver>,
override val name: Name,
override var initializer: FirExpression?,
override var backingField: FirBackingField?,
@@ -154,8 +154,7 @@ internal class FirEnumEntryImpl(
}
override fun replaceContextReceivers(newContextReceivers: List<FirContextReceiver>) {
contextReceivers.clear()
contextReceivers.addAll(newContextReceivers)
contextReceivers = newContextReceivers.toMutableOrEmpty()
}
override fun replaceInitializer(newInitializer: FirExpression?) {
@@ -49,7 +49,7 @@ internal class FirErrorFunctionImpl(
override var deprecationsProvider: DeprecationsProvider,
override val containerSource: DeserializedContainerSource?,
override val dispatchReceiverType: ConeSimpleKotlinType?,
override val contextReceivers: MutableList<FirContextReceiver>,
override var contextReceivers: MutableOrEmptyList<FirContextReceiver>,
override val valueParameters: MutableList<FirValueParameter>,
override val diagnostic: ConeDiagnostic,
override val symbol: FirErrorFunctionSymbol,
@@ -135,8 +135,7 @@ internal class FirErrorFunctionImpl(
}
override fun replaceContextReceivers(newContextReceivers: List<FirContextReceiver>) {
contextReceivers.clear()
contextReceivers.addAll(newContextReceivers)
contextReceivers = newContextReceivers.toMutableOrEmpty()
}
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
@@ -49,7 +49,7 @@ internal class FirErrorPropertyImpl(
override var deprecationsProvider: DeprecationsProvider,
override val containerSource: DeserializedContainerSource?,
override val dispatchReceiverType: ConeSimpleKotlinType?,
override val contextReceivers: MutableList<FirContextReceiver>,
override var contextReceivers: MutableOrEmptyList<FirContextReceiver>,
override val name: Name,
override var backingField: FirBackingField?,
override var annotations: MutableOrEmptyList<FirAnnotation>,
@@ -152,8 +152,7 @@ internal class FirErrorPropertyImpl(
}
override fun replaceContextReceivers(newContextReceivers: List<FirContextReceiver>) {
contextReceivers.clear()
contextReceivers.addAll(newContextReceivers)
contextReceivers = newContextReceivers.toMutableOrEmpty()
}
override fun replaceInitializer(newInitializer: FirExpression?) {}
@@ -51,7 +51,7 @@ class FirFieldImpl @FirImplementationDetail constructor(
override var deprecationsProvider: DeprecationsProvider,
override val containerSource: DeserializedContainerSource?,
override val dispatchReceiverType: ConeSimpleKotlinType?,
override val contextReceivers: MutableList<FirContextReceiver>,
override var contextReceivers: MutableOrEmptyList<FirContextReceiver>,
override val name: Name,
override var initializer: FirExpression?,
override val isVar: Boolean,
@@ -159,8 +159,7 @@ class FirFieldImpl @FirImplementationDetail constructor(
}
override fun replaceContextReceivers(newContextReceivers: List<FirContextReceiver>) {
contextReceivers.clear()
contextReceivers.addAll(newContextReceivers)
contextReceivers = newContextReceivers.toMutableOrEmpty()
}
override fun replaceInitializer(newInitializer: FirExpression?) {
@@ -51,7 +51,7 @@ class FirPrimaryConstructor @FirImplementationDetail constructor(
override var deprecationsProvider: DeprecationsProvider,
override val containerSource: DeserializedContainerSource?,
override val dispatchReceiverType: ConeSimpleKotlinType?,
override val contextReceivers: MutableList<FirContextReceiver>,
override var contextReceivers: MutableOrEmptyList<FirContextReceiver>,
override val valueParameters: MutableList<FirValueParameter>,
override var annotations: MutableOrEmptyList<FirAnnotation>,
override val symbol: FirConstructorSymbol,
@@ -149,8 +149,7 @@ class FirPrimaryConstructor @FirImplementationDetail constructor(
}
override fun replaceContextReceivers(newContextReceivers: List<FirContextReceiver>) {
contextReceivers.clear()
contextReceivers.addAll(newContextReceivers)
contextReceivers = newContextReceivers.toMutableOrEmpty()
}
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
@@ -51,7 +51,7 @@ open class FirPropertyAccessorImpl @FirImplementationDetail constructor(
override var deprecationsProvider: DeprecationsProvider,
override val containerSource: DeserializedContainerSource?,
override val dispatchReceiverType: ConeSimpleKotlinType?,
override val contextReceivers: MutableList<FirContextReceiver>,
override var contextReceivers: MutableOrEmptyList<FirContextReceiver>,
override val valueParameters: MutableList<FirValueParameter>,
override var body: FirBlock?,
override var contractDescription: FirContractDescription,
@@ -148,8 +148,7 @@ open class FirPropertyAccessorImpl @FirImplementationDetail constructor(
}
override fun replaceContextReceivers(newContextReceivers: List<FirContextReceiver>) {
contextReceivers.clear()
contextReceivers.addAll(newContextReceivers)
contextReceivers = newContextReceivers.toMutableOrEmpty()
}
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
@@ -61,7 +61,7 @@ internal class FirPropertyImpl(
override var setter: FirPropertyAccessor?,
override var backingField: FirBackingField?,
override var annotations: MutableOrEmptyList<FirAnnotation>,
override val contextReceivers: MutableList<FirContextReceiver>,
override var contextReceivers: MutableOrEmptyList<FirContextReceiver>,
override val symbol: FirPropertySymbol,
override val delegateFieldSymbol: FirDelegateFieldSymbol?,
override val isLocal: Boolean,
@@ -204,8 +204,7 @@ internal class FirPropertyImpl(
}
override fun replaceContextReceivers(newContextReceivers: List<FirContextReceiver>) {
contextReceivers.clear()
contextReceivers.addAll(newContextReceivers)
contextReceivers = newContextReceivers.toMutableOrEmpty()
}
override fun replaceBodyResolveState(newBodyResolveState: FirPropertyBodyResolveState) {
@@ -52,7 +52,7 @@ internal class FirRegularClassImpl(
override val symbol: FirRegularClassSymbol,
override var companionObjectSymbol: FirRegularClassSymbol?,
override val superTypeRefs: MutableList<FirTypeRef>,
override val contextReceivers: MutableList<FirContextReceiver>,
override var contextReceivers: MutableOrEmptyList<FirContextReceiver>,
) : FirRegularClass() {
override var controlFlowGraphReference: FirControlFlowGraphReference? = null
override val hasLazyNestedClassifiers: Boolean get() = false
@@ -38,7 +38,7 @@ internal class FirScriptImpl(
override val name: Name,
override val statements: MutableList<FirStatement>,
override val symbol: FirScriptSymbol,
override val contextReceivers: MutableList<FirContextReceiver>,
override var contextReceivers: MutableOrEmptyList<FirContextReceiver>,
) : FirScript() {
init {
symbol.bind(this)
@@ -50,7 +50,7 @@ internal class FirSimpleFunctionImpl(
override var deprecationsProvider: DeprecationsProvider,
override val containerSource: DeserializedContainerSource?,
override val dispatchReceiverType: ConeSimpleKotlinType?,
override val contextReceivers: MutableList<FirContextReceiver>,
override var contextReceivers: MutableOrEmptyList<FirContextReceiver>,
override val valueParameters: MutableList<FirValueParameter>,
override var body: FirBlock?,
override var contractDescription: FirContractDescription,
@@ -149,8 +149,7 @@ internal class FirSimpleFunctionImpl(
}
override fun replaceContextReceivers(newContextReceivers: List<FirContextReceiver>) {
contextReceivers.clear()
contextReceivers.addAll(newContextReceivers)
contextReceivers = newContextReceivers.toMutableOrEmpty()
}
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
@@ -50,7 +50,7 @@ internal class FirValueParameterImpl(
override var deprecationsProvider: DeprecationsProvider,
override val containerSource: DeserializedContainerSource?,
override val dispatchReceiverType: ConeSimpleKotlinType?,
override val contextReceivers: MutableList<FirContextReceiver>,
override var contextReceivers: MutableOrEmptyList<FirContextReceiver>,
override val name: Name,
override var backingField: FirBackingField?,
override var annotations: MutableOrEmptyList<FirAnnotation>,
@@ -161,8 +161,7 @@ internal class FirValueParameterImpl(
}
override fun replaceContextReceivers(newContextReceivers: List<FirContextReceiver>) {
contextReceivers.clear()
contextReceivers.addAll(newContextReceivers)
contextReceivers = newContextReceivers.toMutableOrEmpty()
}
override fun replaceInitializer(newInitializer: FirExpression?) {}
@@ -54,7 +54,7 @@ abstract class FirDefaultPropertyAccessor(
deprecationsProvider = UnresolvedDeprecationProvider,
containerSource = null,
dispatchReceiverType = null,
contextReceivers = mutableListOf(),
contextReceivers = MutableOrEmptyList.empty(),
valueParameters,
body = null,
contractDescription = FirEmptyContractDescription,
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.declarations.impl
import org.jetbrains.kotlin.builtins.StandardNames.BACKING_FIELD
import org.jetbrains.kotlin.fir.FirImplementationDetail
import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.fir.MutableOrEmptyList
import org.jetbrains.kotlin.fir.builder.toMutableOrEmpty
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
@@ -48,6 +49,6 @@ class FirDefaultPropertyBackingField(
annotations = annotations.toMutableOrEmpty(),
typeParameters = mutableListOf(),
status = status,
contextReceivers = mutableListOf(),
contextReceivers = MutableOrEmptyList.empty(),
)
@@ -103,7 +103,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
+field("containerSource", type(DeserializedContainerSource::class), nullable = true)
+field("dispatchReceiverType", coneSimpleKotlinTypeType, nullable = true)
+fieldList(contextReceiver, withReplace = true)
+fieldList(contextReceiver, useMutableOrEmpty = true, withReplace = true)
}
function.configure {
@@ -284,7 +284,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
+booleanField("hasLazyNestedClassifiers")
+field("companionObjectSymbol", regularClassSymbolType, nullable = true, withReplace = true)
+superTypeRefs(withReplace = true)
+fieldList(contextReceiver)
+fieldList(contextReceiver, useMutableOrEmpty = true)
}
anonymousObject.configure {
@@ -346,7 +346,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
}
property.configure {
+fieldList(contextReceiver, withReplace = true).withTransform()
+fieldList(contextReceiver, useMutableOrEmpty = true, withReplace = true).withTransform()
+symbol("FirPropertySymbol")
+field("delegateFieldSymbol", delegateFieldSymbolType, nullable = true)
+booleanField("isLocal")
@@ -471,7 +471,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
+name
+fieldList(statement).withTransform()
+symbol("FirScriptSymbol")
+fieldList(contextReceiver)
+fieldList(contextReceiver, useMutableOrEmpty = true)
}
packageDirective.configure {
@@ -66,8 +66,8 @@ fun fieldList(name: String, type: Importable, withReplace: Boolean = false, useM
return FieldList(name, type, withReplace, useMutableOrEmpty)
}
fun fieldList(element: AbstractElement, withReplace: Boolean = false): Field {
return FieldList(element.name.replaceFirstChar(Char::lowercaseChar) + "s", element, withReplace)
fun fieldList(element: AbstractElement, withReplace: Boolean = false, useMutableOrEmpty: Boolean = false): Field {
return FieldList(element.name.replaceFirstChar(Char::lowercaseChar) + "s", element, withReplace, useMutableOrEmpty)
}
// ----------- Field set -----------