@@ -29,15 +29,15 @@ import com.bnorm.power.diagram.substring
2929import com.bnorm.power.internal.ReturnableBlockTransformer
3030import org.jetbrains.kotlin.backend.common.IrElementTransformerVoidWithContext
3131import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
32- import org.jetbrains.kotlin.backend.common.ir.asSimpleLambda
32+ import org.jetbrains.kotlin.backend.common.ir.asInlinable
3333import org.jetbrains.kotlin.backend.common.ir.inline
3434import org.jetbrains.kotlin.backend.common.lower.DeclarationIrBuilder
3535import org.jetbrains.kotlin.cli.common.messages.CompilerMessageLocation
3636import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
3737import org.jetbrains.kotlin.cli.common.messages.MessageCollector
3838import org.jetbrains.kotlin.ir.IrElement
3939import org.jetbrains.kotlin.ir.backend.js.utils.asString
40- import org.jetbrains.kotlin.ir.builders.irCallOp
40+ import org.jetbrains.kotlin.ir.builders.irBlock
4141import org.jetbrains.kotlin.ir.builders.irString
4242import org.jetbrains.kotlin.ir.builders.parent
4343import org.jetbrains.kotlin.ir.declarations.IrFile
@@ -52,16 +52,14 @@ import org.jetbrains.kotlin.ir.types.IrSimpleType
5252import org.jetbrains.kotlin.ir.types.IrType
5353import org.jetbrains.kotlin.ir.types.IrTypeArgument
5454import org.jetbrains.kotlin.ir.types.IrTypeProjection
55- import org.jetbrains.kotlin.ir.types.classOrNull
5655import org.jetbrains.kotlin.ir.types.classifierOrNull
5756import org.jetbrains.kotlin.ir.types.isBoolean
5857import org.jetbrains.kotlin.ir.types.isSubtypeOf
5958import org.jetbrains.kotlin.ir.util.deepCopyWithSymbols
60- import org.jetbrains.kotlin.ir.util.functions
6159import org.jetbrains.kotlin.ir.util.isFunctionOrKFunction
6260import org.jetbrains.kotlin.ir.util.kotlinFqName
61+ import org.jetbrains.kotlin.ir.util.patchDeclarationParents
6362import org.jetbrains.kotlin.name.FqName
64- import org.jetbrains.kotlin.util.OperatorNameConventions
6563
6664class PowerAssertCallTransformer (
6765 private val file : IrFile ,
@@ -159,17 +157,15 @@ class PowerAssertCallTransformer(
159157 roots : List <Node ?>,
160158 original : IrCall
161159 ): IrExpression ? {
162- val lambda = messageArgument?.asSimpleLambda()
163160 return when {
164161 messageArgument is IrConst <* > -> messageArgument
165162 messageArgument is IrStringConcatenation -> messageArgument
166- lambda != null -> lambda.deepCopyWithSymbols(parent).inline(parent)
167- .transform(ReturnableBlockTransformer (context, scope.scopeOwnerSymbol), null )
168- messageArgument != null -> {
169- val invoke = messageArgument.type.classOrNull!! .owner.functions
170- .single { it.name == OperatorNameConventions .INVOKE }
171- irCallOp(invoke.symbol, invoke.returnType, messageArgument)
172- }
163+ messageArgument != null -> irBlock {
164+ + messageArgument.deepCopyWithSymbols(parent)
165+ .asInlinable(this )
166+ .inline(parent)
167+ .patchDeclarationParents(scope.getLocalDeclarationParent())
168+ }.transform(ReturnableBlockTransformer (context, scope.scopeOwnerSymbol), null )
173169 // TODO what should the default message be?
174170 roots.size == 1 && original.getValueArgument(0 )!! .type.isBoolean() -> irString(" Assertion failed" )
175171 else -> null
0 commit comments