Merge
This commit is contained in:
+2
-2
@@ -80,7 +80,7 @@ internal class FunctionInlining(val context: Context): IrElementTransformerVoid(
|
|||||||
fun inlineFunction(irCall: IrCall): IrBlock {
|
fun inlineFunction(irCall: IrCall): IrBlock {
|
||||||
|
|
||||||
val functionDescriptor = irCall.descriptor as FunctionDescriptor
|
val functionDescriptor = irCall.descriptor as FunctionDescriptor
|
||||||
val functionDeclaration = context.ir.moduleIndex.functions[functionDescriptor] // Get FunctionDeclaration by FunctionDescriptor.
|
val functionDeclaration = context.ir.originalModuleIndex.functions[functionDescriptor] // Get FunctionDeclaration by FunctionDescriptor.
|
||||||
val copyFuncDeclaration = functionDeclaration!!.accept(DeepCopyIrTree(), null) as IrFunction // Create copy of the function.
|
val copyFuncDeclaration = functionDeclaration!!.accept(DeepCopyIrTree(), null) as IrFunction // Create copy of the function.
|
||||||
|
|
||||||
val startOffset = copyFuncDeclaration.startOffset
|
val startOffset = copyFuncDeclaration.startOffset
|
||||||
@@ -113,7 +113,7 @@ internal class FunctionInlining(val context: Context): IrElementTransformerVoid(
|
|||||||
val functionDescriptor = expression.descriptor as FunctionDescriptor
|
val functionDescriptor = expression.descriptor as FunctionDescriptor
|
||||||
if (!functionDescriptor.isInline) return super.visitCall(expression) // Function is not to be inlined - do nothing.
|
if (!functionDescriptor.isInline) return super.visitCall(expression) // Function is not to be inlined - do nothing.
|
||||||
|
|
||||||
val functionDeclaration = context.ir.moduleIndex.functions[functionDescriptor] // Get FunctionDeclaration by FunctionDescriptor.
|
val functionDeclaration = context.ir.originalModuleIndex.functions[functionDescriptor] // Get FunctionDeclaration by FunctionDescriptor.
|
||||||
if (functionDeclaration == null) return super.visitCall(expression) // Function is declared in another module.
|
if (functionDeclaration == null) return super.visitCall(expression) // Function is declared in another module.
|
||||||
return inlineFunction(expression) // Return newly created IrBlock instead of IrCall.
|
return inlineFunction(expression) // Return newly created IrBlock instead of IrCall.
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user