[IR] Use InlineFunctionResolver for inlinable function references

#KT-62313 Fixed
This commit is contained in:
Igor Chevdar
2023-10-10 14:37:19 +03:00
committed by Space Team
parent c6470a684d
commit a8c6074c45
@@ -284,7 +284,7 @@ class FunctionInlining(
return when {
functionArgument is IrFunctionReference ->
inlineFunctionReference(expression, functionArgument, functionArgument.symbol.owner)
inlineFunctionReference(expression, functionArgument, functionArgument.symbol)
functionArgument is IrPropertyReference && functionArgument.field != null -> inlineField(expression, functionArgument)
@@ -382,6 +382,20 @@ class FunctionInlining(
)
}
fun inlineFunctionReference(
irCall: IrCall,
irFunctionReference: IrFunctionReference,
inlinedFunctionSymbol: IrFunctionSymbol,
): IrExpression {
val inlinedFunction = inlinedFunctionSymbol.owner
return inlineFunctionReference(
irCall, irFunctionReference,
if (inlinedFunction.needsInlining)
inlineFunctionResolver.getFunctionDeclaration(inlinedFunction.symbol)
else inlinedFunction
)
}
fun inlineFunctionReference(
irCall: IrCall,
irFunctionReference: IrFunctionReference,