From 307de0be89c42e23f350343da0bdc45b5f325dca Mon Sep 17 00:00:00 2001 From: Georgy Bronnikov Date: Fri, 23 Jul 2021 19:06:12 +0300 Subject: [PATCH] IR: always update deserializedSymbols in referenceLocalIrSymbol The symbol created in deserializeIrSymbolToDeclare might be discarded when an existing declaration is used in deserialization (as it happens when deserializing IR bodies for JVM declarations). --- .../backend/common/serialization/IrDeclarationDeserializer.kt | 2 +- .../kotlin/backend/common/serialization/IrSymbolDeserializer.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrDeclarationDeserializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrDeclarationDeserializer.kt index 438d5275fcd..e4a1ef90c36 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrDeclarationDeserializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrDeclarationDeserializer.kt @@ -286,7 +286,7 @@ class IrDeclarationDeserializer( // make sure this symbol is known to linker symbolDeserializer.referenceLocalIrSymbol(result.symbol, sig) - result.annotations += deserializeAnnotations(proto.base.annotationList) + result.annotations = deserializeAnnotations(proto.base.annotationList) result.parent = currentParent return result } diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrSymbolDeserializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrSymbolDeserializer.kt index e28266aaead..2021d815eab 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrSymbolDeserializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrSymbolDeserializer.kt @@ -73,7 +73,7 @@ class IrSymbolDeserializer( } fun referenceLocalIrSymbol(symbol: IrSymbol, signature: IdSignature) { - deserializedSymbols.putIfAbsent(signature, symbol) + deserializedSymbols.put(signature, symbol) } fun referenceSimpleFunctionByLocalSignature(idSignature: IdSignature) : IrSimpleFunctionSymbol =