[FIR2IR] Temporary fix of createIrEnumEntry
Check if a bound entry with the same signature is already exist
This commit is contained in:
committed by
Space Team
parent
ecc81098a6
commit
c9a8f433fb
@@ -535,6 +535,11 @@ class Fir2IrClassifierStorage(
|
||||
): IrEnumEntry {
|
||||
return enumEntry.convertWithOffsets { startOffset, endOffset ->
|
||||
val signature = signatureComposer.composeSignature(enumEntry, forceTopLevelPrivate = forceTopLevelPrivate)
|
||||
if (signature != null) {
|
||||
// Compilation of kotlinx-serialization-protobuf fails with "already bound" exception if this check is removed
|
||||
// TODO: get rid of this check
|
||||
symbolTable.referenceEnumEntryIfAny(signature)?.let { if (it.isBound) return@convertWithOffsets it.owner }
|
||||
}
|
||||
val result = declareIrEnumEntry(signature) { symbol ->
|
||||
val origin = enumEntry.computeIrOrigin(predefinedOrigin)
|
||||
irFactory.createEnumEntry(
|
||||
|
||||
@@ -664,6 +664,10 @@ open class SymbolTable(
|
||||
else IrEnumEntrySymbolImpl()
|
||||
}
|
||||
|
||||
fun referenceEnumEntryIfAny(sig: IdSignature): IrEnumEntrySymbol? {
|
||||
return enumEntrySymbolTable.get(sig)
|
||||
}
|
||||
|
||||
val unboundEnumEntries: Set<IrEnumEntrySymbol> get() = enumEntrySymbolTable.unboundSymbols
|
||||
|
||||
private fun createFieldSymbol(descriptor: PropertyDescriptor, signature: IdSignature?): IrFieldSymbol =
|
||||
|
||||
Reference in New Issue
Block a user