[FIR2IR] Use signature composer to read external callables

This commit is contained in:
Mikhail Glukhikh
2020-06-01 12:20:35 +03:00
parent 9ea69b4b3c
commit 8c422fbfc7
3 changed files with 24 additions and 8 deletions
@@ -874,6 +874,11 @@ class Fir2IrDeclarationStorage(
is FirSimpleFunction, is FirAnonymousFunction -> {
getCachedIrFunction(firDeclaration)?.let { return it.symbol }
val irParent = findIrParent(firDeclaration)
symbolTable.referenceSimpleFunctionIfAny(signatureComposer.composeSignature(firDeclaration))?.let { irFunctionSymbol ->
val irFunction = irFunctionSymbol.owner
functionCache[firDeclaration] = irFunction
return irFunctionSymbol
}
val parentOrigin = (irParent as? IrDeclaration)?.origin ?: IrDeclarationOrigin.DEFINED
createIrFunction(firDeclaration, irParent, origin = parentOrigin).apply {
setAndModifyParent(irParent)
@@ -891,6 +896,11 @@ class Fir2IrDeclarationStorage(
is FirProperty -> {
propertyCache[fir]?.let { return it.symbol }
val irParent = findIrParent(fir)
symbolTable.referencePropertyIfAny(signatureComposer.composeSignature(fir))?.let { irPropertySymbol ->
val irProperty = irPropertySymbol.owner
propertyCache[fir] = irProperty
return irPropertySymbol
}
val parentOrigin = (irParent as? IrDeclaration)?.origin ?: IrDeclarationOrigin.DEFINED
createIrProperty(fir, irParent, origin = parentOrigin).apply {
setAndModifyParent(irParent)