IR: propagate original declaration info via attributeOwnerId

For IrProperty, IrSimpleFunction we need to pass information about
original declaration to JVM_IR codegen. Instead of descriptors, use
the attributeOwnerId field.
This commit is contained in:
Georgy Bronnikov
2020-08-09 14:54:39 +03:00
parent 04d93dfbce
commit dafcdc527d
16 changed files with 79 additions and 8 deletions
@@ -95,6 +95,17 @@ internal abstract class PersistentIrPropertyCommon(
setCarrier().metadataField = v
}
}
@Suppress("LeakingThis")
override var attributeOwnerIdField: IrAttributeContainer = this
override var attributeOwnerId: IrAttributeContainer
get() = getCarrier().attributeOwnerIdField
set(v) {
if (attributeOwnerId !== v) {
setCarrier().attributeOwnerIdField = v
}
}
}
internal class PersistentIrProperty(
@@ -13,6 +13,7 @@ internal interface PropertyCarrier : DeclarationCarrier {
var getterField: IrSimpleFunction?
var setterField: IrSimpleFunction?
var metadataField: MetadataSource?
var attributeOwnerIdField: IrAttributeContainer
override fun clone(): PropertyCarrier {
return PropertyCarrierImpl(
@@ -23,7 +24,8 @@ internal interface PropertyCarrier : DeclarationCarrier {
backingFieldField,
getterField,
setterField,
metadataField
metadataField,
attributeOwnerIdField,
)
}
}
@@ -36,5 +38,6 @@ internal class PropertyCarrierImpl(
override var backingFieldField: IrField?,
override var getterField: IrSimpleFunction?,
override var setterField: IrSimpleFunction?,
override var metadataField: MetadataSource?
override var metadataField: MetadataSource?,
override var attributeOwnerIdField: IrAttributeContainer
) : PropertyCarrier