IR refactor ProvisionalFunctionExpressionLowering
diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/ProvisionalFunctionExpressionLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/ProvisionalFunctionExpressionLowering.kt index 2ef8d27..217394f 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/ProvisionalFunctionExpressionLowering.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/ProvisionalFunctionExpressionLowering.kt
@@ -6,52 +6,40 @@ package org.jetbrains.kotlin.backend.common.lower import org.jetbrains.kotlin.backend.common.BodyLoweringPass -import org.jetbrains.kotlin.backend.common.FileLoweringPass import org.jetbrains.kotlin.ir.IrElement -import org.jetbrains.kotlin.ir.IrStatement import org.jetbrains.kotlin.ir.declarations.IrDeclaration -import org.jetbrains.kotlin.ir.declarations.IrFile import org.jetbrains.kotlin.ir.declarations.IrVariable -import org.jetbrains.kotlin.ir.expressions.* +import org.jetbrains.kotlin.ir.expressions.IrBody +import org.jetbrains.kotlin.ir.expressions.IrCall +import org.jetbrains.kotlin.ir.expressions.IrFunctionExpression import org.jetbrains.kotlin.ir.expressions.impl.IrBlockImpl import org.jetbrains.kotlin.ir.expressions.impl.IrFunctionReferenceImpl -import org.jetbrains.kotlin.ir.util.remapTypes -import org.jetbrains.kotlin.ir.visitors.IrElementTransformer -import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid -import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid +import org.jetbrains.kotlin.ir.visitors.IrAbstractTransformer class ProvisionalFunctionExpressionLoweringContext( - val outer: ProvisionalFunctionExpressionLoweringContext? = null, val startOffset: Int? = null, - val endOffset: Int? = null) + val endOffset: Int? = null +) + class ProvisionalFunctionExpressionLowering : - IrElementTransformer<ProvisionalFunctionExpressionLoweringContext>, + IrAbstractTransformer<ProvisionalFunctionExpressionLoweringContext>(), BodyLoweringPass { override fun lower(irBody: IrBody, container: IrDeclaration) { irBody.transformChildren(this, ProvisionalFunctionExpressionLoweringContext()) } - override fun visitCall(expression: IrCall, data: ProvisionalFunctionExpressionLoweringContext) = super.visitCall( - expression, - ProvisionalFunctionExpressionLoweringContext( - data, - expression.startOffset, - expression.endOffset - ) - ) + private fun withLocationOf(irElement: IrElement) = + ProvisionalFunctionExpressionLoweringContext(irElement.startOffset, irElement.endOffset) - override fun visitVariable(declaration: IrVariable, data: ProvisionalFunctionExpressionLoweringContext) = super.visitVariable( - declaration, - ProvisionalFunctionExpressionLoweringContext( - data, - declaration.startOffset, - declaration.endOffset - ) - ) + override fun visitCall(expression: IrCall, data: ProvisionalFunctionExpressionLoweringContext) = + super.visitCall(expression, withLocationOf(expression)) + + override fun visitVariable(declaration: IrVariable, data: ProvisionalFunctionExpressionLoweringContext) = + super.visitVariable(declaration, withLocationOf(declaration)) override fun visitFunctionExpression(expression: IrFunctionExpression, data: ProvisionalFunctionExpressionLoweringContext): IrElement { - expression.transformChildren(this, ProvisionalFunctionExpressionLoweringContext(data)) + expression.transformChildren(this, ProvisionalFunctionExpressionLoweringContext()) val startOffset = data.startOffset ?: expression.startOffset val endOffset = data.endOffset ?: expression.endOffset