[FIR] Add transformAnnotations for fir nodes
This commit is contained in:
+1
-1
@@ -37,7 +37,7 @@ object FieldSets {
|
||||
val declarations = fieldList(declaration)
|
||||
|
||||
val annotations =
|
||||
fieldList("annotations", annotationCall)
|
||||
fieldList("annotations", annotationCall).withTransform(needTransformInOtherChildren = true)
|
||||
|
||||
fun symbolWithPackage(packageName: String?, symbolClassName: String, argument: String? = null): Field {
|
||||
return field("symbol", type(packageName, symbolClassName), argument)
|
||||
|
||||
+1
@@ -80,6 +80,7 @@ class Element(val name: String, kind: Kind) : AbstractElement {
|
||||
val existingField = result.first { it == field }
|
||||
existingField.fromParent = true
|
||||
existingField.needsSeparateTransform = existingField.needsSeparateTransform || field.needsSeparateTransform
|
||||
existingField.needTransformInOtherChildren = existingField.needTransformInOtherChildren || field.needTransformInOtherChildren
|
||||
}
|
||||
}
|
||||
result.toList().asReversed()
|
||||
|
||||
+4
-1
@@ -87,6 +87,9 @@ infix fun FieldSet.with(set: FieldSet): FieldSet {
|
||||
return this + set
|
||||
}
|
||||
|
||||
fun Field.withTransform(): Field = copy().apply { needsSeparateTransform = true }
|
||||
fun Field.withTransform(needTransformInOtherChildren: Boolean = false): Field = copy().apply {
|
||||
needsSeparateTransform = true
|
||||
this.needTransformInOtherChildren = needTransformInOtherChildren
|
||||
}
|
||||
|
||||
fun FieldSet.withTransform(): FieldSet = this.map { it.withTransform() }
|
||||
+6
@@ -16,6 +16,7 @@ sealed class Field : Importable {
|
||||
|
||||
var fromParent: Boolean = false
|
||||
open var needsSeparateTransform: Boolean = false
|
||||
open var needTransformInOtherChildren: Boolean = false
|
||||
|
||||
open val defaultValueInImplementation: String? get() = null
|
||||
abstract var isMutable: Boolean
|
||||
@@ -34,6 +35,7 @@ sealed class Field : Importable {
|
||||
copy.arguments.clear()
|
||||
copy.arguments.addAll(arguments)
|
||||
copy.needsSeparateTransform = needsSeparateTransform
|
||||
copy.needTransformInOtherChildren = needTransformInOtherChildren
|
||||
copy.isMutable = isMutable
|
||||
}
|
||||
copy.fromParent = fromParent
|
||||
@@ -71,6 +73,10 @@ class FieldWithDefault(val origin: Field) : Field() {
|
||||
get() = origin.needsSeparateTransform
|
||||
set(_) {}
|
||||
|
||||
override var needTransformInOtherChildren: Boolean
|
||||
get() = origin.needTransformInOtherChildren
|
||||
set(_) {}
|
||||
|
||||
override val arguments: MutableList<Importable>
|
||||
get() = origin.arguments
|
||||
|
||||
|
||||
+6
-1
@@ -228,7 +228,9 @@ fun SmartPrinter.printImplementation(implementation: Implementation) {
|
||||
}
|
||||
|
||||
field.needsSeparateTransform -> {
|
||||
println("transform${field.name.capitalize()}(transformer, data)")
|
||||
if (!(element.needTransformOtherChildren && field.needTransformInOtherChildren)) {
|
||||
println("transform${field.name.capitalize()}(transformer, data)")
|
||||
}
|
||||
}
|
||||
|
||||
!element.needTransformOtherChildren -> {
|
||||
@@ -295,6 +297,9 @@ fun SmartPrinter.printImplementation(implementation: Implementation) {
|
||||
if (!field.needsSeparateTransform) {
|
||||
field.transform()
|
||||
}
|
||||
if (field.needTransformInOtherChildren) {
|
||||
println("transform${field.name.capitalize()}(transformer, data)")
|
||||
}
|
||||
}
|
||||
println("return this")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user