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
|
||||
) : IrDeclarationOrigin {
|
||||
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 =
|
||||
IrDeclarationOrigin::class.nestedClasses.toList() + DeclarationFactory.FIELD_FOR_OUTER_THIS::class
|
||||
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 {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user