Sort fields for RTTI, so that the order of fields in IR and the order of fields in
the deserialized descriptors are the same.
This commit is contained in:
committed by
alexander-gorshenev
parent
4b27074979
commit
ca908ef4bd
+6
-3
@@ -99,10 +99,10 @@ private fun getDeclaredFields(context: Context, classDescriptor: ClassDescriptor
|
|||||||
// two ways: first we check IR, then we check the annotation.
|
// two ways: first we check IR, then we check the annotation.
|
||||||
|
|
||||||
val irClass = context.ir.moduleIndexForCodegen.classes[classDescriptor]
|
val irClass = context.ir.moduleIndexForCodegen.classes[classDescriptor]
|
||||||
if (irClass != null) {
|
val fields = if (irClass != null) {
|
||||||
val declarations = irClass.declarations
|
val declarations = irClass.declarations
|
||||||
|
|
||||||
return declarations.mapNotNull {
|
declarations.mapNotNull {
|
||||||
when (it) {
|
when (it) {
|
||||||
is IrProperty -> it.backingField?.descriptor
|
is IrProperty -> it.backingField?.descriptor
|
||||||
is IrField -> it.descriptor
|
is IrField -> it.descriptor
|
||||||
@@ -114,7 +114,10 @@ private fun getDeclaredFields(context: Context, classDescriptor: ClassDescriptor
|
|||||||
getContributedDescriptors().
|
getContributedDescriptors().
|
||||||
filterIsInstance<PropertyDescriptor>()
|
filterIsInstance<PropertyDescriptor>()
|
||||||
|
|
||||||
return properties.mapNotNull { it.backingField }
|
properties.mapNotNull { it.backingField }
|
||||||
|
}
|
||||||
|
return fields.sortedBy {
|
||||||
|
it.name.hashCode()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user