IR: fix deserialization of publicly visible type parameters

This commit is contained in:
Georgy Bronnikov
2021-11-13 15:00:12 +03:00
committed by TeamCityServer
parent 3cc883cf7b
commit b6ddd758ec
2 changed files with 12 additions and 3 deletions
@@ -260,8 +260,17 @@ class IrDeclarationDeserializer(
} else {
val symbolData = BinarySymbolData.decode(proto.base.symbol)
sig = symbolDeserializer.deserializeIdSignature(symbolData.signatureId)
declareScopedTypeParameter(sig, {
if (it.isPubliclyVisible) IrTypeParameterPublicSymbolImpl(it) else IrTypeParameterSymbolImpl() }, factory)
declareScopedTypeParameter(
sig,
{
if (it.isPubliclyVisible)
symbolDeserializer.deserializeIrSymbol(
sig, BinarySymbolData.SymbolKind.TYPE_PARAMETER_SYMBOL
) as IrTypeParameterSymbol
else IrTypeParameterSymbolImpl()
},
factory
)
}
}
@@ -69,7 +69,7 @@ fun deserializeFromByteArray(
fileSymbol = dummyIrFile.symbol,
/* TODO */ actuals = emptyList(),
enqueueLocalTopLevelDeclaration = {}, // just link to it in symbolTable
handleExpectActualMapping = { _, _ -> TODO() }
handleExpectActualMapping = { _, symbol -> symbol } no expect declarations
) { idSignature, symbolKind ->
referencePublicSymbol(symbolTable, descriptorFinder, idSignature, symbolKind)
}