[FIR] Add transformContextReceivers() method to FirProperty

This commit is contained in:
Dmitriy Novozhilov
2022-08-24 16:37:00 +03:00
committed by teamcity
parent f3fc5cbc42
commit 7ef2f7ccde
8 changed files with 43 additions and 24 deletions
@@ -325,6 +325,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
}
property.configure {
+fieldList(contextReceiver, withReplace = true).withTransform()
+symbol("FirPropertySymbol")
+field("delegateFieldSymbol", delegateFieldSymbolType, nullable = true)
+booleanField("isLocal")
@@ -102,6 +102,7 @@ class Element(override val name: String, kind: Kind) : AbstractElement {
existingField.needsSeparateTransform = existingField.needsSeparateTransform || parentField.needsSeparateTransform
existingField.needTransformInOtherChildren = existingField.needTransformInOtherChildren || parentField.needTransformInOtherChildren
existingField.withReplace = parentField.withReplace || existingField.withReplace
existingField.parentHasSeparateTransform = parentField.needsSeparateTransform
if (parentField.type != existingField.type && parentField.withReplace) {
existingField.overridenTypes += parentField
overridenFields[existingField, parentField] = false
@@ -17,6 +17,7 @@ sealed class Field : Importable {
var fromParent: Boolean = false
open var needsSeparateTransform: Boolean = false
var parentHasSeparateTransform: Boolean = true
open var needTransformInOtherChildren: Boolean = false
open val defaultValueInImplementation: String? get() = null
@@ -46,6 +47,7 @@ sealed class Field : Importable {
copy.useNullableForReplace = useNullableForReplace
}
copy.fromParent = fromParent
copy.parentHasSeparateTransform = parentHasSeparateTransform
}
protected abstract fun internalCopy(): Field
@@ -117,7 +117,7 @@ fun SmartPrinter.printElement(element: Element) {
if (!field.needsSeparateTransform) continue
println()
abstract()
if (field.fromParent) {
if (field.fromParent && field.parentHasSeparateTransform) {
print("override ")
}
println(field.transformFunctionDeclaration(typeWithArguments))