JS IR: make PIR Carriers immutable

This commit is contained in:
Anton Bannykh
2021-02-02 16:43:59 +03:00
committed by TeamCityServer
parent 93fb7597e9
commit 027f656790
26 changed files with 279 additions and 215 deletions
@@ -143,7 +143,8 @@ internal object PersistentIrGenerator {
+"v.container = this"
),
id
) else id) + "setCarrier().${name}Field = v"
) else id) + "setCarrier()",
+"${name}Field = v"
)
)
).indent()
@@ -161,7 +162,7 @@ internal object PersistentIrGenerator {
fun carriers(name: String, vararg fields: Field): E = lines(
id,
+"internal interface ${name}Carrier : DeclarationCarrier" + block(
*(fields.map { +"var ${it.name}Field: " + it.type + if (it.lateinit) "?" else "" }.toTypedArray()),
*(fields.map { +"val ${it.name}Field: " + it.type + if (it.lateinit) "?" else "" }.toTypedArray()),
id,
+"override fun clone(): ${name}Carrier " + block(
+"return ${name}CarrierImpl(",
@@ -179,10 +180,10 @@ internal object PersistentIrGenerator {
+"internal class ${name}CarrierImpl(",
arrayOf(
+"override val lastModified: Int",
+"override var parentField: " + IrDeclarationParent + "?",
+"override var originField: " + IrDeclarationOrigin,
+"override var annotationsField: List<" + IrConstructorCall + ">",
*(fields.map { +"override var ${it.name}Field: " + it.type + if (it.lateinit) "?" else "" }.toTypedArray()),
+"override val parentField: " + IrDeclarationParent + "?",
+"override val originField: " + IrDeclarationOrigin,
+"override val annotationsField: List<" + IrConstructorCall + ">",
*(fields.map { +"override val ${it.name}Field: " + it.type + if (it.lateinit) "?" else "" }.toTypedArray()),
).join(separator = ",\n").indent(),
+") : ${name}Carrier",
id,