[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 {
|
return when {
|
||||||
functionArgument is IrFunctionReference ->
|
functionArgument is IrFunctionReference ->
|
||||||
inlineFunctionReference(expression, functionArgument, functionArgument.symbol.owner)
|
inlineFunctionReference(expression, functionArgument, functionArgument.symbol)
|
||||||
|
|
||||||
functionArgument is IrPropertyReference && functionArgument.field != null -> inlineField(expression, functionArgument)
|
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(
|
fun inlineFunctionReference(
|
||||||
irCall: IrCall,
|
irCall: IrCall,
|
||||||
irFunctionReference: IrFunctionReference,
|
irFunctionReference: IrFunctionReference,
|
||||||
|
|||||||
Reference in New Issue
Block a user