[KLIB] Refactored IrSymbolDeserializer.kt
- extract function which creates a new symbols in linker
This commit is contained in:
committed by
TeamCityServer
parent
df9d039c03
commit
918ed1f077
+29
-20
@@ -38,26 +38,8 @@ class IrSymbolDeserializer(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun referenceDeserializedSymbol(symbolKind: BinarySymbolData.SymbolKind, idSig: IdSignature): IrSymbol = symbolTable.run {
|
private fun referenceDeserializedSymbol(symbolKind: BinarySymbolData.SymbolKind, idSig: IdSignature): IrSymbol {
|
||||||
when (symbolKind) {
|
return referenceDeserializedSymbol(symbolTable, fileSymbol, symbolKind, idSig)
|
||||||
BinarySymbolData.SymbolKind.ANONYMOUS_INIT_SYMBOL -> IrAnonymousInitializerSymbolImpl()
|
|
||||||
BinarySymbolData.SymbolKind.CLASS_SYMBOL -> referenceClassFromLinker(idSig)
|
|
||||||
BinarySymbolData.SymbolKind.CONSTRUCTOR_SYMBOL -> referenceConstructorFromLinker(idSig)
|
|
||||||
BinarySymbolData.SymbolKind.TYPE_PARAMETER_SYMBOL -> referenceGlobalTypeParameterFromLinker(idSig)
|
|
||||||
BinarySymbolData.SymbolKind.ENUM_ENTRY_SYMBOL -> referenceEnumEntryFromLinker(idSig)
|
|
||||||
BinarySymbolData.SymbolKind.STANDALONE_FIELD_SYMBOL -> referenceFieldFromLinker(idSig)
|
|
||||||
BinarySymbolData.SymbolKind.FIELD_SYMBOL -> referenceFieldFromLinker(idSig)
|
|
||||||
BinarySymbolData.SymbolKind.FUNCTION_SYMBOL -> referenceSimpleFunctionFromLinker(idSig)
|
|
||||||
BinarySymbolData.SymbolKind.TYPEALIAS_SYMBOL -> referenceTypeAliasFromLinker(idSig)
|
|
||||||
BinarySymbolData.SymbolKind.PROPERTY_SYMBOL -> referencePropertyFromLinker(idSig)
|
|
||||||
BinarySymbolData.SymbolKind.VARIABLE_SYMBOL -> IrVariableSymbolImpl()
|
|
||||||
BinarySymbolData.SymbolKind.VALUE_PARAMETER_SYMBOL -> IrValueParameterSymbolImpl()
|
|
||||||
BinarySymbolData.SymbolKind.RECEIVER_PARAMETER_SYMBOL -> IrValueParameterSymbolImpl()
|
|
||||||
BinarySymbolData.SymbolKind.LOCAL_DELEGATED_PROPERTY_SYMBOL ->
|
|
||||||
IrLocalDelegatedPropertySymbolImpl()
|
|
||||||
BinarySymbolData.SymbolKind.FILE_SYMBOL -> fileSymbol
|
|
||||||
else -> error("Unexpected classifier symbol kind: $symbolKind for signature $idSig")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun referenceLocalIrSymbol(symbol: IrSymbol, signature: IdSignature) {
|
fun referenceLocalIrSymbol(symbol: IrSymbol, signature: IdSignature) {
|
||||||
@@ -109,3 +91,30 @@ class IrSymbolDeserializer(
|
|||||||
return signatureDeserializer.deserializeIdSignature(index)
|
return signatureDeserializer.deserializeIdSignature(index)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal fun referenceDeserializedSymbol(
|
||||||
|
symbolTable: ReferenceSymbolTable,
|
||||||
|
fileSymbol: IrFileSymbol?,
|
||||||
|
symbolKind: BinarySymbolData.SymbolKind,
|
||||||
|
idSig: IdSignature
|
||||||
|
): IrSymbol = symbolTable.run {
|
||||||
|
when (symbolKind) {
|
||||||
|
BinarySymbolData.SymbolKind.ANONYMOUS_INIT_SYMBOL -> IrAnonymousInitializerSymbolImpl()
|
||||||
|
BinarySymbolData.SymbolKind.CLASS_SYMBOL -> referenceClassFromLinker(idSig)
|
||||||
|
BinarySymbolData.SymbolKind.CONSTRUCTOR_SYMBOL -> referenceConstructorFromLinker(idSig)
|
||||||
|
BinarySymbolData.SymbolKind.TYPE_PARAMETER_SYMBOL -> referenceGlobalTypeParameterFromLinker(idSig)
|
||||||
|
BinarySymbolData.SymbolKind.ENUM_ENTRY_SYMBOL -> referenceEnumEntryFromLinker(idSig)
|
||||||
|
BinarySymbolData.SymbolKind.STANDALONE_FIELD_SYMBOL -> referenceFieldFromLinker(idSig)
|
||||||
|
BinarySymbolData.SymbolKind.FIELD_SYMBOL -> referenceFieldFromLinker(idSig)
|
||||||
|
BinarySymbolData.SymbolKind.FUNCTION_SYMBOL -> referenceSimpleFunctionFromLinker(idSig)
|
||||||
|
BinarySymbolData.SymbolKind.TYPEALIAS_SYMBOL -> referenceTypeAliasFromLinker(idSig)
|
||||||
|
BinarySymbolData.SymbolKind.PROPERTY_SYMBOL -> referencePropertyFromLinker(idSig)
|
||||||
|
BinarySymbolData.SymbolKind.VARIABLE_SYMBOL -> IrVariableSymbolImpl()
|
||||||
|
BinarySymbolData.SymbolKind.VALUE_PARAMETER_SYMBOL -> IrValueParameterSymbolImpl()
|
||||||
|
BinarySymbolData.SymbolKind.RECEIVER_PARAMETER_SYMBOL -> IrValueParameterSymbolImpl()
|
||||||
|
BinarySymbolData.SymbolKind.LOCAL_DELEGATED_PROPERTY_SYMBOL ->
|
||||||
|
IrLocalDelegatedPropertySymbolImpl()
|
||||||
|
BinarySymbolData.SymbolKind.FILE_SYMBOL -> fileSymbol ?: error("File symbol is not provided")
|
||||||
|
else -> error("Unexpected classifier symbol kind: $symbolKind for signature $idSig")
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user