diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegen.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegen.kt index aeb1805fe7f..7e28161ea0b 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegen.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegen.kt @@ -130,16 +130,16 @@ abstract class InlineCodegen( fun performInline( typeArguments: List?, - callDefault: Boolean, - typeSystem: TypeSystemCommonBackendContext, - codegen: BaseExpressionCodegen + inlineDefaultLambdas: Boolean, + mapDefaultSignature: Boolean, + typeSystem: TypeSystemCommonBackendContext ) { var nodeAndSmap: SMAPAndMethodNode? = null try { nodeAndSmap = createInlineMethodNode( - functionDescriptor, methodOwner, jvmSignature, callDefault, typeArguments, typeSystem, state, sourceCompiler + functionDescriptor, methodOwner, jvmSignature, mapDefaultSignature, typeArguments, typeSystem, state, sourceCompiler ) - endCall(inlineCall(nodeAndSmap, callDefault)) + endCall(inlineCall(nodeAndSmap, inlineDefaultLambdas)) } catch (e: CompilationException) { throw e } catch (e: InlineException) { @@ -210,16 +210,12 @@ abstract class InlineCodegen( ?: error("No stack value for continuation parameter of suspend function") } - protected fun inlineCall(nodeAndSmap: SMAPAndMethodNode, callDefault: Boolean): InlineResult { + protected fun inlineCall(nodeAndSmap: SMAPAndMethodNode, inlineDefaultLambda: Boolean): InlineResult { assert(delayedHiddenWriting == null) { "'putHiddenParamsIntoLocals' should be called after 'processAndPutHiddenParameters(true)'" } defaultSourceMapper.callSiteMarker = CallSiteMarker(codegen.lastLineNumber) val node = nodeAndSmap.node - if (callDefault) { - val defaultLambdas = expandMaskConditionsAndUpdateVariableNodes( - node, maskStartIndex, maskValues, methodHandleInDefaultMethodIndex, - extractDefaultLambdaOffsetAndDescriptor(jvmSignature, functionDescriptor) - ) - for (lambda in defaultLambdas) { + if (inlineDefaultLambda) { + for (lambda in extractDefaultLambdas(node)) { invocationParamBuilder.buildParameters().getParameterByDeclarationSlot(lambda.offset).functionalArgument = lambda val prev = expressionMap.put(lambda.offset, lambda) assert(prev == null) { "Lambda with offset ${lambda.offset} already exists: $prev" } @@ -283,6 +279,8 @@ abstract class InlineCodegen( return result } + abstract fun extractDefaultLambdas(node: MethodNode): List + fun generateAndInsertFinallyBlocks( intoNode: MethodNode, insertPoints: List, @@ -486,7 +484,9 @@ abstract class InlineCodegen( if (kind !== ValueKind.DEFAULT_MASK && kind !== ValueKind.METHOD_HANDLE_IN_DEFAULT) { return false } - assert(value is StackValue.Constant) { "Additional default method argument should be constant, but " + value } + assert(value is StackValue.Constant) { + "Additional default method argument should be constant, but " + value + } val constantValue = (value as StackValue.Constant).value if (kind === ValueKind.DEFAULT_MASK) { assert(constantValue is Int) { "Mask should be of Integer type, but " + constantValue } @@ -714,6 +714,7 @@ abstract class InlineCodegen( return NestedSourceMapper(parent, nodeAndSmap.sortedRanges, nodeAndSmap.classSMAP.sourceInfo) } } + } val BaseExpressionCodegen.v: InstructionAdapter diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/LambdaInfo.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/LambdaInfo.kt index 5fb65e3d99d..c02fb3755b6 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/LambdaInfo.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/LambdaInfo.kt @@ -85,7 +85,20 @@ abstract class LambdaInfo(@JvmField val isCrossInline: Boolean) : FunctionalArgu class NonInlineableArgumentForInlineableParameterCalledInSuspend(val isSuspend: Boolean) : FunctionalArgument object NonInlineableArgumentForInlineableSuspendParameter : FunctionalArgument -class DefaultLambda( + +class PsiDefaultLambda( + lambdaClassType: Type, + capturedArgs: Array, + parameterDescriptor: ValueParameterDescriptor, + offset: Int, + needReification: Boolean +) : DefaultLambda(lambdaClassType, capturedArgs, parameterDescriptor, offset, needReification) { + override fun mapAsmSignature(sourceCompiler: SourceCompilerForInline): Method { + return sourceCompiler.state.typeMapper.mapSignatureSkipGeneric(invokeMethodDescriptor).asmMethod + } +} + +abstract class DefaultLambda( override val lambdaClassType: Type, private val capturedArgs: Array, val parameterDescriptor: ValueParameterDescriptor, @@ -93,17 +106,17 @@ class DefaultLambda( val needReification: Boolean ) : LambdaInfo(parameterDescriptor.isCrossinline) { - override var isBoundCallableReference by Delegates.notNull() + final override var isBoundCallableReference by Delegates.notNull() private set val parameterOffsetsInDefault: MutableList = arrayListOf() - override lateinit var invokeMethod: Method + final override lateinit var invokeMethod: Method private set override lateinit var invokeMethodDescriptor: FunctionDescriptor - override lateinit var capturedVars: List + final override lateinit var capturedVars: List private set override fun isReturnFromMe(labelName: String): Boolean = false @@ -168,12 +181,13 @@ class DefaultLambda( isBoundCallableReference = (isFunctionReference || isPropertyReference) && capturedVars.isNotEmpty() val methodName = (if (isPropertyReference) OperatorNameConventions.GET else OperatorNameConventions.INVOKE).asString() - val signature = sourceCompiler.state.typeMapper.mapSignatureSkipGeneric(invokeMethodDescriptor).asmMethod.descriptor + + val signature = mapAsmSignature(sourceCompiler) node = getMethodNode( classReader.b, methodName, - signature, + signature.descriptor, lambdaClassType, signatureAmbiguity = true ) ?: error("Can't find method '$methodName$signature' in '${classReader.className}'") @@ -185,6 +199,8 @@ class DefaultLambda( reifiedTypeInliner.reifyInstructions(node.node) } } + + protected abstract fun mapAsmSignature(sourceCompiler: SourceCompilerForInline): Method } internal fun Type.boxReceiverForBoundReference() = diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/PsiInlineCodegen.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/PsiInlineCodegen.kt index cc956ed1d47..f9a9effffeb 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/PsiInlineCodegen.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/PsiInlineCodegen.kt @@ -27,6 +27,7 @@ import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.org.objectweb.asm.Opcodes import org.jetbrains.org.objectweb.asm.Type import org.jetbrains.org.objectweb.asm.commons.InstructionAdapter +import org.jetbrains.org.objectweb.asm.tree.MethodNode class PsiInlineCodegen( codegen: ExpressionCodegen, @@ -64,7 +65,7 @@ class PsiInlineCodegen( return } try { - performInline(resolvedCall?.typeArguments?.keys?.toList(), callDefault, codegen.typeSystem, codegen) + performInline(resolvedCall?.typeArguments?.keys?.toList(), callDefault, callDefault, codegen.typeSystem) } finally { state.globalInlineContext.exitFromInliningOf(resolvedCall) } @@ -193,4 +194,12 @@ class PsiInlineCodegen( delayedHiddenWriting!!.invoke() delayedHiddenWriting = null } + + override fun extractDefaultLambdas(node: MethodNode): List { + return expandMaskConditionsAndUpdateVariableNodes( + node, maskStartIndex, maskValues, methodHandleInDefaultMethodIndex, + extractDefaultLambdaOffsetAndDescriptor(jvmSignature, functionDescriptor), + ::PsiDefaultLambda + ) + } } diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/defaultMethodUtil.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/defaultMethodUtil.kt index 1576a0eb879..c572f445022 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/defaultMethodUtil.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/defaultMethodUtil.kt @@ -61,13 +61,14 @@ fun extractDefaultLambdaOffsetAndDescriptor( } -fun expandMaskConditionsAndUpdateVariableNodes( +fun expandMaskConditionsAndUpdateVariableNodes( node: MethodNode, maskStartIndex: Int, masks: List, methodHandlerIndex: Int, - defaultLambdas: Map -): List { + defaultLambdas: Map, + lambdaConstructor: (Type, Array, T, Int, Boolean) -> R +): List { fun isMaskIndex(varIndex: Int): Boolean { return maskStartIndex <= varIndex && varIndex < maskStartIndex + masks.size } @@ -110,7 +111,7 @@ fun expandMaskConditionsAndUpdateVariableNodes( val toDelete = linkedSetOf() val toInsert = arrayListOf>() - val defaultLambdasInfo = extractDefaultLambdasInfo(conditions, defaultLambdas, toDelete, toInsert) + val defaultLambdasInfo = extractDefaultLambdasInfo(conditions, defaultLambdas, toDelete, toInsert, lambdaConstructor) val indexToVarNode = node.localVariables?.filter { it.index < maskStartIndex }?.associateBy { it.index } ?: emptyMap() conditions.forEach { @@ -137,12 +138,13 @@ fun expandMaskConditionsAndUpdateVariableNodes( } -private fun extractDefaultLambdasInfo( +private fun extractDefaultLambdasInfo( conditions: List, - defaultLambdas: Map, + defaultLambdas: Map, toDelete: MutableCollection, - toInsert: MutableList> -): List { + toInsert: MutableList>, + lambdaConstructor: (Type, Array, T, Int, Boolean) -> R +): List { val defaultLambdaConditions = conditions.filter { it.expandNotDelete && defaultLambdas.contains(it.varIndex) } return defaultLambdaConditions.map { val varAssignmentInstruction = it.varInsNode!! @@ -186,7 +188,7 @@ private fun extractDefaultLambdasInfo( toInsert.add(varAssignmentInstruction to defaultLambdaFakeCallStub(argTypes, it.varIndex)) - DefaultLambda(owner, argTypes, defaultLambdas[it.varIndex]!!, it.varIndex, needReification) + lambdaConstructor(owner, argTypes, defaultLambdas[it.varIndex]!!, it.varIndex, needReification) } } diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt index c711351a0a2..b0108567eed 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt @@ -985,7 +985,7 @@ class ExpressionCodegen( override fun toKotlinType(type: IrType): KotlinType = type.toKotlinType() }, IrTypeCheckerContext(context.irBuiltIns), state.languageVersionSettings) - return IrInlineCodegen(this, state, callee.descriptor, methodOwner, signature, mappings, sourceCompiler, reifiedTypeInliner) + return IrInlineCodegen(this, state, callee, methodOwner, signature, mappings, sourceCompiler, reifiedTypeInliner) } override fun consumeReifiedOperationMarker(typeParameter: TypeParameterMarker) { diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/IrInlineCodegen.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/IrInlineCodegen.kt index 877229287f6..fdfb07e73d2 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/IrInlineCodegen.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/IrInlineCodegen.kt @@ -15,31 +15,36 @@ import org.jetbrains.kotlin.codegen.ValueKind import org.jetbrains.kotlin.codegen.inline.* import org.jetbrains.kotlin.codegen.state.GenerationState import org.jetbrains.kotlin.descriptors.FunctionDescriptor +import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor +import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin import org.jetbrains.kotlin.ir.declarations.IrFunction import org.jetbrains.kotlin.ir.declarations.IrValueParameter import org.jetbrains.kotlin.ir.declarations.IrVariable import org.jetbrains.kotlin.ir.descriptors.WrappedSimpleFunctionDescriptor import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.types.IrType +import org.jetbrains.kotlin.ir.types.classOrNull import org.jetbrains.kotlin.ir.types.toKotlinType import org.jetbrains.kotlin.ir.util.dump import org.jetbrains.kotlin.ir.util.getArgumentsWithIr import org.jetbrains.kotlin.ir.util.isSuspend +import org.jetbrains.kotlin.resolve.jvm.AsmTypes import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodSignature import org.jetbrains.org.objectweb.asm.Type import org.jetbrains.org.objectweb.asm.commons.Method +import org.jetbrains.org.objectweb.asm.tree.MethodNode class IrInlineCodegen( codegen: ExpressionCodegen, state: GenerationState, - function: FunctionDescriptor, + private val function: IrFunction, methodOwner: Type, signature: JvmMethodSignature, typeParameterMappings: TypeParameterMappings, sourceCompiler: SourceCompilerForInline, reifiedTypeInliner: ReifiedTypeInliner ) : InlineCodegen( - codegen, state, function, methodOwner, signature, typeParameterMappings, sourceCompiler, reifiedTypeInliner + codegen, state, function.descriptor, methodOwner, signature, typeParameterMappings, sourceCompiler, reifiedTypeInliner ), IrCallGenerator { override fun generateAssertFieldIfNeeded(info: RootInliningContext) { if (info.generateAssertField && (sourceCompiler as IrSourceCompilerForInline).isPrimaryCopy) { @@ -52,12 +57,16 @@ class IrInlineCodegen( } override fun putClosureParametersOnStack(next: LambdaInfo, functionReferenceReceiver: StackValue?) { - val lambdaInfo = next as IrExpressionLambdaImpl - activeLambda = lambdaInfo + activeLambda = next - lambdaInfo.reference.getArgumentsWithIr().forEachIndexed { index, (_, ir) -> - putCapturedValueOnStack(ir, lambdaInfo.capturedParamsInDesc[index], index) + when (next) { + is IrExpressionLambdaImpl -> next.reference.getArgumentsWithIr().forEachIndexed { index, (_, ir) -> + putCapturedValueOnStack(ir, next.capturedParamsInDesc[index], index) + } + is IrDefaultLambda -> rememberCapturedForDefaultLambda(next) + else -> throw RuntimeException("Unknown lambda: $next") } + activeLambda = null } @@ -68,7 +77,11 @@ class IrInlineCodegen( codegen: ExpressionCodegen, blockInfo: BlockInfo ) { - if (irValueParameter.isInlineParameter() && isInlineIrExpression(argumentExpression)) { + if (irValueParameter.isInlineParameter( + /*after transformation inlinable lambda parameter with default value would have nullable type: check default value type first*/ + irValueParameter.defaultValue?.expression?.type ?: irValueParameter.type + ) && isInlineIrExpression(argumentExpression) + ) { val irReference: IrFunctionReference = (argumentExpression as IrBlock).statements.filterIsInstance().single() val boundReceiver = argumentExpression.statements.filterIsInstance().singleOrNull() @@ -81,20 +94,39 @@ class IrInlineCodegen( activeLambda = null } } else { - val onStack = if (irValueParameter.index >= 0) - // Reuse an existing local if possible. NOTE: when stopping at a breakpoint placed - // in an inline function, arguments which reuse an existing local will not be visible - // in the debugger. - codegen.genOrGetLocal(argumentExpression, blockInfo) - else - // Do not reuse locals for receivers. While it's actually completely fine, the non-IR - // backend does not do it for internal reasons, and here we replicate the debugging - // experience. - codegen.gen(argumentExpression, parameterType, irValueParameter.type, blockInfo) - // TODO support default argument erasure: do nothing if the parameter is a default mask, the argument is a constant int, - // and processDefaultMaskOrMethodHandler(StackValue.constant(...), ValueKind.DEFAULT_MASK) is true. - val expectedType = JvmKotlinType(parameterType, irValueParameter.type.toKotlinType()) - putArgumentOrCapturedToLocalVal(expectedType, onStack, -1, irValueParameter.index, ValueKind.CAPTURED) + val kind = when (irValueParameter.origin) { + IrDeclarationOrigin.MASK_FOR_DEFAULT_FUNCTION -> ValueKind.DEFAULT_MASK + IrDeclarationOrigin.METHOD_HANDLER_IN_DEFAULT_FUNCTION -> ValueKind.METHOD_HANDLE_IN_DEFAULT + //TODO: support DEFAULT_PARAMETER + else -> ValueKind.CAPTURED + } + + val onStack = when { + kind == ValueKind.METHOD_HANDLE_IN_DEFAULT -> StackValue.constant(null, AsmTypes.OBJECT_TYPE) + kind == ValueKind.DEFAULT_MASK -> StackValue.constant((argumentExpression as IrConst<*>).value, Type.INT_TYPE) + kind == ValueKind.DEFAULT_PARAMETER -> StackValue.constant(null, AsmTypes.OBJECT_TYPE) + irValueParameter.index >= 0 + // Reuse an existing local if possible. NOTE: when stopping at a breakpoint placed + // in an inline function, arguments which reuse an existing local will not be visible + // in the debugger. + -> codegen.genOrGetLocal(argumentExpression, blockInfo) + else + // Do not reuse locals for receivers. While it's actually completely fine, the non-IR + // backend does not do it for internal reasons, and here we replicate the debugging + // experience. + -> codegen.gen(argumentExpression, parameterType, irValueParameter.type, blockInfo) + } + + + //TODO support default argument erasure + if (!processDefaultMaskOrMethodHandler( + onStack, + kind + ) + ) { + val expectedType = JvmKotlinType(parameterType, irValueParameter.type.toKotlinType()) + putArgumentOrCapturedToLocalVal(expectedType, onStack, -1, irValueParameter.index, kind) + } } } @@ -116,7 +148,12 @@ class IrInlineCodegen( // TODO port inlining cycle detection to IrFunctionAccessExpression & pass it state.globalInlineContext.enterIntoInlining(null) try { - performInline(expression.symbol.owner.typeParameters.map { it.symbol }, false, codegen.typeMapper.typeSystem, codegen) + performInline( + expression.symbol.owner.typeParameters.map { it.symbol }, + function.origin == IrDeclarationOrigin.FUNCTION_FOR_DEFAULT_PARAMETER, + false, + codegen.typeMapper.typeSystem + ) } finally { state.globalInlineContext.exitFromInliningOf(null) } @@ -138,6 +175,14 @@ class IrInlineCodegen( expressionMap[closureInfo.index] = lambda } } + + override fun extractDefaultLambdas(node: MethodNode): List { + return expandMaskConditionsAndUpdateVariableNodes( + node, maskStartIndex, maskValues, methodHandleInDefaultMethodIndex, + extractDefaultLambdaOffsetAndDescriptor(jvmSignature, function), + ::IrDefaultLambda + ) + } } class IrExpressionLambdaImpl( @@ -194,6 +239,21 @@ class IrExpressionLambdaImpl( } } +class IrDefaultLambda( + lambdaClassType: Type, + capturedArgs: Array, + private val irValueParameter: IrValueParameter, + offset: Int, + needReification: Boolean +) : DefaultLambda(lambdaClassType, capturedArgs, irValueParameter.descriptor as ValueParameterDescriptor, offset, needReification) { + + override fun mapAsmSignature(sourceCompiler: SourceCompilerForInline): Method { + val invoke = + irValueParameter.type.classOrNull!!.owner.declarations.filterIsInstance().single { it.name.asString() == "invoke" } + return (sourceCompiler as IrSourceCompilerForInline).codegen.context.methodSignatureMapper.mapSignatureSkipGeneric(invoke).asmMethod + } +} + fun isInlineIrExpression(argumentExpression: IrExpression) = when (argumentExpression) { is IrBlock -> argumentExpression.isInlineIrBlock() diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/IrSourceCompilerForInline.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/IrSourceCompilerForInline.kt index c0da5db29f5..b425d630533 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/IrSourceCompilerForInline.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/IrSourceCompilerForInline.kt @@ -40,7 +40,7 @@ class IrSourceCompilerForInline( override val state: GenerationState, override val callElement: IrMemberAccessExpression, private val callee: IrFunction, - private val codegen: ExpressionCodegen, + internal val codegen: ExpressionCodegen, private val data: BlockInfo ) : SourceCompilerForInline { diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/defaultMethodUtilIr.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/defaultMethodUtilIr.kt new file mode 100644 index 00000000000..cabef62545d --- /dev/null +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/defaultMethodUtilIr.kt @@ -0,0 +1,28 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.backend.jvm.codegen + +import org.jetbrains.kotlin.backend.jvm.ir.isInlineParameter +import org.jetbrains.kotlin.codegen.inline.parameterOffsets +import org.jetbrains.kotlin.ir.declarations.IrFunction +import org.jetbrains.kotlin.ir.declarations.IrValueParameter +import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodSignature + +fun extractDefaultLambdaOffsetAndDescriptor( + jvmSignature: JvmMethodSignature, + irFunction: IrFunction +): Map { + val valueParameters = jvmSignature.valueParameters + val parameterOffsets = parameterOffsets(irFunction.isStatic, valueParameters) + + val valueParameterOffset = if (irFunction.extensionReceiverParameter != null) 1 else 0 + + return irFunction.valueParameters.filter { + it.defaultValue != null && it.isInlineParameter(it.defaultValue!!.expression.type) + }.associateBy { + parameterOffsets[valueParameterOffset + it.index] + } +} diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/ir/IrUtils.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/ir/IrUtils.kt index a141f2eee9c..652b0172fef 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/ir/IrUtils.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/ir/IrUtils.kt @@ -96,7 +96,7 @@ val IrFunction.propertyIfAccessor: IrDeclaration fun IrFunction.hasJvmDefault(): Boolean = propertyIfAccessor.hasAnnotation(JVM_DEFAULT_FQ_NAME) -fun IrValueParameter.isInlineParameter() = +fun IrValueParameter.isInlineParameter(type: IrType = this.type) = index >= 0 && !isNoinline && !type.isNullable() && (type.isFunction() || type.isSuspendFunctionTypeOrSubtype()) val IrType.isBoxedArray: Boolean diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/boundFunctionReferenceOnInt.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/boundFunctionReferenceOnInt.kt index 2596a15c763..f23f5089438 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/boundFunctionReferenceOnInt.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/boundFunctionReferenceOnInt.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/boundFunctionReferenceOnLong.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/boundFunctionReferenceOnLong.kt index 2596a15c763..f23f5089438 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/boundFunctionReferenceOnLong.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/boundFunctionReferenceOnLong.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/boundPropertyReference.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/boundPropertyReference.kt index f657a260f5f..1645f590258 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/boundPropertyReference.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/boundPropertyReference.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/boundPropertyReferenceOnInt.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/boundPropertyReferenceOnInt.kt index ec023b176bd..3b2d0b580c2 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/boundPropertyReferenceOnInt.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/boundPropertyReferenceOnInt.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/boundPropertyReferenceOnLong.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/boundPropertyReferenceOnLong.kt index d0c09eaf958..a9740fca74e 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/boundPropertyReferenceOnLong.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/boundPropertyReferenceOnLong.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/constuctorReference.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/constuctorReference.kt index cce1f483816..0de4aa09ebf 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/constuctorReference.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/constuctorReference.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/differentInvokeSignature.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/differentInvokeSignature.kt index 2c181fedf93..7f8648be1b2 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/differentInvokeSignature.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/differentInvokeSignature.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/differentInvokeSignature2.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/differentInvokeSignature2.kt index 96870189427..aaa780dbd2e 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/differentInvokeSignature2.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/differentInvokeSignature2.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/functionImportedFromObject.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/functionImportedFromObject.kt index 9e8665fad4d..377813e4227 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/functionImportedFromObject.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/functionImportedFromObject.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/functionReference.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/functionReference.kt index 2eb56caa556..fc4a641273b 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/functionReference.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/functionReference.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/functionReferenceFromClass.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/functionReferenceFromClass.kt index b41dfcdb197..b30f6c8800b 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/functionReferenceFromClass.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/functionReferenceFromClass.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/functionReferenceFromObject.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/functionReferenceFromObject.kt index 06333867188..71b571dd5e8 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/functionReferenceFromObject.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/functionReferenceFromObject.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/privateFunctionReference.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/privateFunctionReference.kt index 48005e4f932..b02e2936d06 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/privateFunctionReference.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/privateFunctionReference.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/privatePropertyReference.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/privatePropertyReference.kt index 85ccad87070..37b283777ce 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/privatePropertyReference.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/privatePropertyReference.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/propertyImportedFromObject.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/propertyImportedFromObject.kt index 3d075fb0e5c..ee6db8b4d9f 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/propertyImportedFromObject.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/propertyImportedFromObject.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/propertyReference.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/propertyReference.kt index d38966ab890..2d2f32305f4 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/propertyReference.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/propertyReference.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/propertyReferenceFromClass.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/propertyReferenceFromClass.kt index 90f5381ca4d..c58b8d70e09 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/propertyReferenceFromClass.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/propertyReferenceFromClass.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/propertyReferenceFromObject.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/propertyReferenceFromObject.kt index d68aeb28868..10f829fbb35 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/propertyReferenceFromObject.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/callableReferences/propertyReferenceFromObject.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/defaultCallInDefaultLambda.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/defaultCallInDefaultLambda.kt index d5a62078977..42ce6e1de9d 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/defaultCallInDefaultLambda.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/defaultCallInDefaultLambda.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // SKIP_INLINE_CHECK_IN: bar$default package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/differentInvokeSignature.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/differentInvokeSignature.kt index 0131c7b61fc..d4ce1284679 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/differentInvokeSignature.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/differentInvokeSignature.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/instanceCapturedInClass.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/instanceCapturedInClass.kt index d1e5d742eed..897f9f4a392 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/instanceCapturedInClass.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/instanceCapturedInClass.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/jvmStaticDefault.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/jvmStaticDefault.kt index ea805a3cc5a..e3ea90f24dc 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/jvmStaticDefault.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/jvmStaticDefault.kt @@ -1,7 +1,6 @@ // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default // TARGET_BACKEND: JVM -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR //WITH_RUNTIME package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/kt21827.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/kt21827.kt index b4d43b0faf3..bcb63c5cc0f 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/kt21827.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/kt21827.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // SKIP_INLINE_CHECK_IN: lParams$default package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/kt24477.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/kt24477.kt index 4e6020754be..d093fc4c95f 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/kt24477.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/kt24477.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/kt25106.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/kt25106.kt index efc2cbc0acd..192c79daabe 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/kt25106.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/kt25106.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/kt26636.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/kt26636.kt index a0d1ca2af8e..3a8a5257d27 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/kt26636.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/kt26636.kt @@ -1,5 +1,4 @@ // TARGET_BACKEND: JVM -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // WITH_RUNTIME // FILE: 1.kt // SKIP_INLINE_CHECK_IN: enumOrThrow$default diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/simple.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/simple.kt index e0f63e5c8dd..087d6396a7e 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/simple.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/simple.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/simpleErased.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/simpleErased.kt index ae434f43f61..06c34bf8e5f 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/simpleErased.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/simpleErased.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/simpleErasedStaticInstance.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/simpleErasedStaticInstance.kt index e636fcf394c..bc091c6b80f 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/simpleErasedStaticInstance.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/simpleErasedStaticInstance.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/simpleExtension.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/simpleExtension.kt index dbd10c63c5b..012d29a9e6d 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/simpleExtension.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/simpleExtension.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/simpleGeneric.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/simpleGeneric.kt index 1be66e6a48f..8a5c76bffdb 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/simpleGeneric.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/simpleGeneric.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/simpleStaticInstance.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/simpleStaticInstance.kt index 06f40414289..9a70f87d40f 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/simpleStaticInstance.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/simpleStaticInstance.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default package test diff --git a/compiler/testData/codegen/boxInline/reified/defaultLambda/simple.kt b/compiler/testData/codegen/boxInline/reified/defaultLambda/simple.kt index b54ade54525..e4e9095672f 100644 --- a/compiler/testData/codegen/boxInline/reified/defaultLambda/simple.kt +++ b/compiler/testData/codegen/boxInline/reified/defaultLambda/simple.kt @@ -1,5 +1,4 @@ // TARGET_BACKEND: JVM -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default // WITH_RUNTIME diff --git a/compiler/testData/codegen/bytecodeText/coercionToUnitOptimization/largeMethodWithCoercionToUnit.kt b/compiler/testData/codegen/bytecodeText/coercionToUnitOptimization/largeMethodWithCoercionToUnit.kt index 1aa84d5cdea..4e0d9509d97 100644 --- a/compiler/testData/codegen/bytecodeText/coercionToUnitOptimization/largeMethodWithCoercionToUnit.kt +++ b/compiler/testData/codegen/bytecodeText/coercionToUnitOptimization/largeMethodWithCoercionToUnit.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR inline fun inlineFunVoid(f: () -> Unit): Unit { return f() }