[IR] Use InlineFunctionResolver for inlinable function references
#KT-62313 Fixed
This commit is contained in:
+15
-1
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user