[IR] Move some inline utils from backend.common into ir.util
This commit is contained in:
-33
@@ -127,31 +127,6 @@ fun IrInlinable.inline(target: IrDeclarationParent, arguments: List<IrValueDecla
|
||||
}
|
||||
}
|
||||
|
||||
val IrInlinedFunctionBlock.inlineDeclaration: IrDeclaration
|
||||
get() = when (val element = inlinedElement) {
|
||||
is IrFunction -> element
|
||||
is IrFunctionExpression -> element.function
|
||||
is IrFunctionReference -> element.symbol.owner
|
||||
is IrPropertyReference -> element.symbol.owner
|
||||
else -> throw AssertionError("Not supported ir element for inlining ${element.dump()}")
|
||||
}
|
||||
|
||||
private val IrInlinedFunctionBlock.inlineFunction: IrFunction?
|
||||
get() = when (val element = inlinedElement) {
|
||||
is IrFunction -> element
|
||||
is IrFunctionExpression -> element.function
|
||||
is IrFunctionReference -> element.symbol.owner.takeIf { it.isInline }
|
||||
else -> null
|
||||
}
|
||||
|
||||
fun IrInlinedFunctionBlock.isFunctionInlining(): Boolean {
|
||||
return this.inlinedElement is IrFunction
|
||||
}
|
||||
|
||||
fun IrInlinedFunctionBlock.isLambdaInlining(): Boolean {
|
||||
return !isFunctionInlining()
|
||||
}
|
||||
|
||||
fun IrInlinedFunctionBlock.getAdditionalStatementsFromInlinedBlock(): List<IrStatement> {
|
||||
return this.statements
|
||||
.filterIsInstance<IrComposite>()
|
||||
@@ -198,11 +173,3 @@ fun IrInlinedFunctionBlock.putStatementsInFrontOfInlinedFunction(statements: Lis
|
||||
this.statements.addAll(if (insertAfter == -1) 0 else insertAfter + 1, statements)
|
||||
}
|
||||
|
||||
val IrContainerExpression.innerInlinedBlockOrThis: IrContainerExpression
|
||||
get() = (this as? IrReturnableBlock)?.statements?.singleOrNull() as? IrInlinedFunctionBlock ?: this
|
||||
|
||||
val IrReturnableBlock.inlineFunction: IrFunction?
|
||||
get() = (this.statements.singleOrNull() as? IrInlinedFunctionBlock)?.inlineFunction
|
||||
|
||||
val IrReturnableBlock.sourceFileSymbol: IrFileSymbol?
|
||||
get() = inlineFunction?.fileOrNull?.symbol
|
||||
|
||||
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.types.isUnit
|
||||
import org.jetbrains.kotlin.ir.types.typeWith
|
||||
import org.jetbrains.kotlin.ir.util.dump
|
||||
import org.jetbrains.kotlin.ir.util.inlineFunction
|
||||
import org.jetbrains.kotlin.ir.util.statements
|
||||
|
||||
fun IrReturnTarget.returnType(context: CommonBackendContext) =
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.backend.common.lower
|
||||
|
||||
import org.jetbrains.kotlin.backend.common.ir.innerInlinedBlockOrThis
|
||||
import org.jetbrains.kotlin.ir.util.innerInlinedBlockOrThis
|
||||
import org.jetbrains.kotlin.ir.IrBuiltIns
|
||||
import org.jetbrains.kotlin.ir.IrStatement
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.backend.common.FileLoweringPass
|
||||
import org.jetbrains.kotlin.backend.common.ir.getAdditionalStatementsFromInlinedBlock
|
||||
import org.jetbrains.kotlin.backend.common.ir.getNonDefaultAdditionalStatementsFromInlinedBlock
|
||||
import org.jetbrains.kotlin.backend.common.ir.getOriginalStatementsFromInlinedBlock
|
||||
import org.jetbrains.kotlin.backend.common.ir.isFunctionInlining
|
||||
import org.jetbrains.kotlin.ir.util.isFunctionInlining
|
||||
import org.jetbrains.kotlin.ir.IrElement
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.expressions.*
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.backend.common.lower
|
||||
import org.jetbrains.kotlin.backend.common.BodyLoweringPass
|
||||
import org.jetbrains.kotlin.backend.common.CommonBackendContext
|
||||
import org.jetbrains.kotlin.backend.common.descriptors.synthesizedString
|
||||
import org.jetbrains.kotlin.backend.common.ir.isFunctionInlining
|
||||
import org.jetbrains.kotlin.ir.util.isFunctionInlining
|
||||
import org.jetbrains.kotlin.backend.common.lower.inline.isInlineParameter
|
||||
import org.jetbrains.kotlin.backend.common.runOnFilePostfix
|
||||
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
|
||||
|
||||
Reference in New Issue
Block a user