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
@@ -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 -----------