[IR] Move IrValueDeclaration.isAssignable to extension property

to remove custom logic from generated classes, in particular
to simplify source generator itself.
This commit is contained in:
Wojciech Litewka
2024-03-12 13:31:20 +01:00
committed by Space Team
parent ddcef6396e
commit 5e9c3025bb
7 changed files with 18 additions and 25 deletions
@@ -194,7 +194,6 @@ object IrTree : AbstractTreeBuilder() {
+descriptor("ValueDescriptor")
+symbol(valueSymbolType)
+field("type", irTypeType)
+field("isAssignable", boolean, mutable = false)
}
val valueParameter: Element by element(Declaration) {
needTransformMethod()
@@ -203,6 +202,7 @@ object IrTree : AbstractTreeBuilder() {
parent(valueDeclaration)
+descriptor("ParameterDescriptor")
+field("isAssignable", boolean, mutable = false)
+symbol(valueParameterSymbolType)
+field("index", int)
+field("varargElementType", irTypeType, nullable = true)
@@ -597,16 +597,6 @@ object IrTree : AbstractTreeBuilder() {
+field("isConst", boolean)
+field("isLateinit", boolean)
+field("initializer", expression, nullable = true)
+field("isAssignable", boolean, mutable = false) {
defaultValueInBase = "true"
withGetter = true
additionalImports.add(setValue)
kDoc = """
Variables are assignable by default. This means that they can be used in [${setValue.typeName}].
Variables are assigned in the IR even though they are not 'var' in the input. Hence
the separate assignability flag.
""".trimIndent()
}
}
val packageFragment: Element by element(Declaration) {
ownsChildren = false