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:
+11
@@ -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(
|
||||
|
||||
+5
-2
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user