Implement equals/hashcode for IrDeclarationOrigin so deserialized unknown origins would be compared correctly
This commit is contained in:
@@ -55,4 +55,18 @@ abstract class IrDeclarationOriginImpl(
|
|||||||
override val isSynthetic: Boolean = false
|
override val isSynthetic: Boolean = false
|
||||||
) : IrDeclarationOrigin {
|
) : IrDeclarationOrigin {
|
||||||
override fun toString(): String = name
|
override fun toString(): String = name
|
||||||
|
|
||||||
|
override fun equals(other: Any?): Boolean {
|
||||||
|
if (this === other) return true
|
||||||
|
if (other !is IrDeclarationOriginImpl) return false
|
||||||
|
|
||||||
|
if (name != other.name) return false
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun hashCode(): Int {
|
||||||
|
return name.hashCode()
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-1
@@ -1153,7 +1153,11 @@ abstract class IrModuleDeserializer(
|
|||||||
private val allKnownOrigins =
|
private val allKnownOrigins =
|
||||||
IrDeclarationOrigin::class.nestedClasses.toList() + DeclarationFactory.FIELD_FOR_OUTER_THIS::class
|
IrDeclarationOrigin::class.nestedClasses.toList() + DeclarationFactory.FIELD_FOR_OUTER_THIS::class
|
||||||
val originIndex = allKnownOrigins.map { it.objectInstance as IrDeclarationOriginImpl }.associateBy { it.name }
|
val originIndex = allKnownOrigins.map { it.objectInstance as IrDeclarationOriginImpl }.associateBy { it.name }
|
||||||
fun deserializeIrDeclarationOrigin(proto: KotlinIr.IrDeclarationOrigin) = originIndex[deserializeString(proto.custom)]!!
|
|
||||||
|
fun deserializeIrDeclarationOrigin(proto: KotlinIr.IrDeclarationOrigin): IrDeclarationOriginImpl {
|
||||||
|
val originName = deserializeString(proto.custom)
|
||||||
|
return originIndex[originName] ?: object : IrDeclarationOriginImpl(originName) {}
|
||||||
|
}
|
||||||
|
|
||||||
open fun deserializeDeclaration(proto: KotlinIr.IrDeclaration, parent: IrDeclarationParent?): IrDeclaration {
|
open fun deserializeDeclaration(proto: KotlinIr.IrDeclaration, parent: IrDeclarationParent?): IrDeclaration {
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user