[IR] Linker: Small improvements

This commit is contained in:
Dmitriy Dolovov
2022-10-04 10:55:12 +02:00
parent 181809e2af
commit f7d2dfd729
@@ -113,31 +113,21 @@ abstract class KotlinIrLinker(
} }
private fun findDeserializedDeclarationForSymbol(symbol: IrSymbol): DeclarationDescriptor? { private fun findDeserializedDeclarationForSymbol(symbol: IrSymbol): DeclarationDescriptor? {
if (!triedToDeserializeDeclarationForSymbol.add(symbol)) return null
if (symbol in triedToDeserializeDeclarationForSymbol) { val descriptor = if (symbol.hasDescriptor) symbol.descriptor else return null
return null
}
triedToDeserializeDeclarationForSymbol.add(symbol)
if (!symbol.hasDescriptor) return null
val descriptor = symbol.descriptor
val moduleDeserializer = resolveModuleDeserializer(descriptor.module, symbol.signature) val moduleDeserializer = resolveModuleDeserializer(descriptor.module, symbol.signature)
moduleDeserializer.declareIrSymbol(symbol) moduleDeserializer.declareIrSymbol(symbol)
deserializeAllReachableTopLevels() deserializeAllReachableTopLevels()
if (!symbol.isBound) return null
return descriptor return if (symbol.isBound) descriptor else null
} }
protected open fun platformSpecificSymbol(symbol: IrSymbol): Boolean = false protected open fun platformSpecificSymbol(symbol: IrSymbol): Boolean = false
private fun tryResolveCustomDeclaration(symbol: IrSymbol): IrDeclaration? { private fun tryResolveCustomDeclaration(symbol: IrSymbol): IrDeclaration? {
if (!symbol.hasDescriptor) return null val descriptor = if (symbol.hasDescriptor) symbol.descriptor else return null
val descriptor = symbol.descriptor
if (descriptor is CallableMemberDescriptor) { if (descriptor is CallableMemberDescriptor) {
if (descriptor.kind == CallableMemberDescriptor.Kind.FAKE_OVERRIDE) { if (descriptor.kind == CallableMemberDescriptor.Kind.FAKE_OVERRIDE) {
// skip fake overrides // skip fake overrides