[FIR] Add FirBackingField

This commit is contained in:
Nikolay Lunyak
2021-08-04 17:06:59 +03:00
committed by TeamCityServer
parent a0982341ee
commit ee58df6b3c
30 changed files with 387 additions and 0 deletions
@@ -53,6 +53,7 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
val contractDescriptionOwner = sealedElement("ContractDescriptionOwner", Declaration)
val simpleFunction = element("SimpleFunction", Declaration, function, contractDescriptionOwner, typeParametersOwner)
val propertyAccessor = element("PropertyAccessor", Declaration, function, contractDescriptionOwner, typeParametersOwner)
val backingField = element("BackingField", Declaration, typedDeclaration, typeParametersOwner, statement)
val constructor = element("Constructor", Declaration, function, typeParameterRefsOwner)
val file = element("File", Declaration, annotatedDeclaration)
val packageDirective = element("PackageDirective", Other)
@@ -333,6 +333,20 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
+typeParameters
}
backingField.configure {
+symbol("FirPropertyFieldDeclarationSymbol")
+field("backingFieldSymbol", backingFieldSymbolType, nullable = true).apply {
withBindThis = false
}
+field("propertySymbol", firPropertySymbolType, nullable = true).apply {
withBindThis = false
}
+initializer.withTransform().withReplace()
+annotations
+typeParameters
+status.withTransform()
}
declarationStatus.configure {
+visibility
+modality
@@ -377,6 +391,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
generateBooleanFields("var", "val")
+field("getter", propertyAccessor, nullable = true).withTransform()
+field("setter", propertyAccessor, nullable = true).withTransform()
+field("backingField", backingField, nullable = true).withTransform()
+annotations
needTransformOtherChildren()
}