diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/BaseExpressionCodegen.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/BaseExpressionCodegen.kt index 7bd842c4ad0..c1c22cd6080 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/BaseExpressionCodegen.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/BaseExpressionCodegen.kt @@ -19,7 +19,6 @@ package org.jetbrains.kotlin.codegen import org.jetbrains.kotlin.codegen.inline.NameGenerator import org.jetbrains.kotlin.codegen.inline.ReifiedTypeParametersUsages import org.jetbrains.kotlin.descriptors.ClassDescriptor -import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor import org.jetbrains.org.objectweb.asm.commons.InstructionAdapter interface BaseExpressionCodegen { @@ -32,8 +31,6 @@ interface BaseExpressionCodegen { val lastLineNumber: Int - fun consumeReifiedOperationMarker(typeParameterDescriptor: TypeParameterDescriptor) - fun propagateChildReifiedTypeParametersUsages(reifiedTypeParametersUsages: ReifiedTypeParametersUsages) fun pushClosureOnStack( diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java index a0fc08b0543..73c04def32f 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java @@ -92,6 +92,7 @@ import org.jetbrains.org.objectweb.asm.commons.Method; import java.util.*; import java.util.function.Supplier; +import java.util.stream.Collectors; import static org.jetbrains.kotlin.builtins.KotlinBuiltIns.isInt; import static org.jetbrains.kotlin.codegen.AsmUtil.*; @@ -1031,7 +1032,7 @@ public class ExpressionCodegen extends KtVisitor impleme } @NotNull - public StackValue putClosureInstanceOnStack( + private StackValue putClosureInstanceOnStack( @NotNull ClosureCodegen closureCodegen, @Nullable StackValue functionReferenceReceiver ) { @@ -4839,16 +4840,16 @@ The "returned" value of try expression with no finally is either the last expres putReifiedOperationMarkerIfTypeIsReifiedParameterImpl(type, operationKind, v, null); } - public static void putReifiedOperationMarkerIfTypeIsReifiedParameter( + private static void putReifiedOperationMarkerIfTypeIsReifiedParameter( @NotNull KotlinType type, @NotNull ReifiedTypeInliner.OperationKind operationKind, @NotNull InstructionAdapter v, - @NotNull BaseExpressionCodegen codegen + @NotNull ExpressionCodegen codegen ) { putReifiedOperationMarkerIfTypeIsReifiedParameterImpl(type, operationKind, v, codegen); } private static void putReifiedOperationMarkerIfTypeIsReifiedParameterImpl( @NotNull KotlinType type, @NotNull ReifiedTypeInliner.OperationKind operationKind, @NotNull InstructionAdapter v, - @Nullable BaseExpressionCodegen codegen + @Nullable ExpressionCodegen codegen ) { Pair typeParameterAndReificationArgument = extractReificationArgument(type); if (typeParameterAndReificationArgument != null && typeParameterAndReificationArgument.getFirst().isReified()) { @@ -4862,7 +4863,11 @@ The "returned" value of try expression with no finally is either the last expres @Override public void propagateChildReifiedTypeParametersUsages(@NotNull ReifiedTypeParametersUsages usages) { - parentCodegen.getReifiedTypeParametersUsages().propagateChildUsagesWithinContext(usages, context); + parentCodegen.getReifiedTypeParametersUsages().propagateChildUsagesWithinContext( + usages, + () -> context.getContextDescriptor().getTypeParameters().stream().filter(TypeParameterDescriptor::isReified).map( + it -> it.getName().asString()).collect(Collectors.toSet()) + ); } @Override @@ -5079,8 +5084,7 @@ The "returned" value of try expression with no finally is either the last expres return v; } - @Override - public void consumeReifiedOperationMarker(@NotNull TypeParameterDescriptor typeParameterDescriptor) { + private void consumeReifiedOperationMarker(@NotNull TypeParameterDescriptor typeParameterDescriptor) { if (typeParameterDescriptor.getContainingDeclaration() != context.getContextDescriptor()) { parentCodegen.getReifiedTypeParametersUsages(). addUsedReifiedParameter(typeParameterDescriptor.getName().asString()); diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ReifiedTypeInliner.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ReifiedTypeInliner.kt index c2824c093c4..10ad7c3487b 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ReifiedTypeInliner.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ReifiedTypeInliner.kt @@ -16,7 +16,6 @@ package org.jetbrains.kotlin.codegen.inline -import org.jetbrains.kotlin.codegen.context.MethodContext import org.jetbrains.kotlin.codegen.generateAsCast import org.jetbrains.kotlin.codegen.generateIsCheck import org.jetbrains.kotlin.codegen.intrinsics.IntrinsicMethods @@ -349,18 +348,14 @@ class ReifiedTypeParametersUsages { usedTypeParameters.add(name) } - fun propagateChildUsagesWithinContext(child: ReifiedTypeParametersUsages, context: MethodContext) { + fun propagateChildUsagesWithinContext(child: ReifiedTypeParametersUsages, reifiedTypeParameterNamesInContext: () -> Set) { if (!child.wereUsedReifiedParameters()) return // used for propagating reified TP usages from children member codegen to parent's // mark enclosing object-literal/lambda as needed reification iff // 1. at least one of it's method contains operations to reify // 2. reified type parameter of these operations is not from current method signature // i.e. from outer scope - child.usedTypeParameters.filterNot { name -> - context.contextDescriptor.typeParameters.any { typeParameter -> - typeParameter.isReified && typeParameter.name.asString() == name - } - }.forEach { usedTypeParameters.add(it) } + usedTypeParameters.addAll(child.usedTypeParameters - reifiedTypeParameterNamesInContext()) } fun mergeAll(other: ReifiedTypeParametersUsages) { diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ClassCodegen.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ClassCodegen.kt index 1c6e1a018fe..ffe298dd5ba 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ClassCodegen.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ClassCodegen.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.backend.jvm.lower.constantValue import org.jetbrains.kotlin.codegen.* import org.jetbrains.kotlin.codegen.binding.CodegenBinding import org.jetbrains.kotlin.codegen.inline.DefaultSourceMapper +import org.jetbrains.kotlin.codegen.inline.ReifiedTypeParametersUsages import org.jetbrains.kotlin.codegen.inline.SourceMapper import org.jetbrains.kotlin.codegen.serialization.JvmSerializationBindings import org.jetbrains.kotlin.codegen.serialization.JvmSerializerExtension @@ -54,6 +55,8 @@ open class ClassCodegen protected constructor( val visitor: ClassBuilder = createClassBuilder() + val reifiedTypeParametersUsages = ReifiedTypeParametersUsages() + open fun createClassBuilder() = state.factory.newVisitor( OtherOrigin(descriptor.psiElement, descriptor), type, @@ -70,7 +73,7 @@ open class ClassCodegen protected constructor( else -> null } - fun generate() { + fun generate(): ReifiedTypeParametersUsages { val superClassInfo = irClass.getSuperClassInfo(typeMapper) val signature = getSignature(irClass, type, superClassInfo, typeMapper) @@ -121,6 +124,7 @@ open class ClassCodegen protected constructor( } else { done() } + return reifiedTypeParametersUsages } private fun generateKotlinMetadataAnnotation() { @@ -228,8 +232,8 @@ open class ClassCodegen protected constructor( } } - fun generateLocalClass(klass: IrClass) { - ClassCodegen(klass, context, this).generate() + fun generateLocalClass(klass: IrClass): ReifiedTypeParametersUsages { + return ClassCodegen(klass, context, this).generate() } private fun generateField(field: IrField) { 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 4841357c30f..d5a9eef269b 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 @@ -17,6 +17,7 @@ import org.jetbrains.kotlin.codegen.* import org.jetbrains.kotlin.codegen.AsmUtil.* import org.jetbrains.kotlin.codegen.coroutines.INVOKE_SUSPEND_METHOD_NAME import org.jetbrains.kotlin.codegen.inline.* +import org.jetbrains.kotlin.codegen.inline.ReifiedTypeInliner.Companion.putNeedClassReificationMarker import org.jetbrains.kotlin.codegen.inline.ReifiedTypeInliner.OperationKind.AS import org.jetbrains.kotlin.codegen.inline.ReifiedTypeInliner.OperationKind.SAFE_AS import org.jetbrains.kotlin.codegen.pseudoInsns.fakeAlwaysFalseIfeq @@ -26,7 +27,6 @@ import org.jetbrains.kotlin.config.isReleaseCoroutines import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ConstructorDescriptor -import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.declarations.* @@ -120,6 +120,8 @@ class ExpressionCodegen( override var lastLineNumber: Int = -1 + private val closureReifiedMarkers = hashMapOf() + private val IrType.asmType: Type get() = typeMapper.mapType(this) @@ -322,6 +324,13 @@ class ExpressionCodegen( when { expression is IrConstructorCall -> { + closureReifiedMarkers[expression.symbol.owner.parentAsClass]?.let { + if (it.wereUsedReifiedParameters()) { + putNeedClassReificationMarker(v) + propagateChildReifiedTypeParametersUsages(it) + } + } + // IR constructors have no receiver and return the new instance, but on JVM they are void-returning // instance methods named . mv.anew(asmType) @@ -562,7 +571,9 @@ class ExpressionCodegen( // TODO maybe remove? override fun visitClass(declaration: IrClass, data: BlockInfo): PromisedValue { - classCodegen.generateLocalClass(declaration) + classCodegen.generateLocalClass(declaration).also { + closureReifiedMarkers[declaration] = it + } return immaterialUnitValue } @@ -1128,12 +1139,16 @@ class ExpressionCodegen( return IrInlineCodegen(this, state, original.descriptor, mappings, IrSourceCompilerForInline(state, element, this, data)) } - override fun consumeReifiedOperationMarker(typeParameterDescriptor: TypeParameterDescriptor) { - //TODO + private fun consumeReifiedOperationMarker(typeParameter: IrTypeParameter) { + if (typeParameter.parent != irFunction) { + classCodegen.reifiedTypeParametersUsages.addUsedReifiedParameter(typeParameter.name.asString()) + } } override fun propagateChildReifiedTypeParametersUsages(reifiedTypeParametersUsages: ReifiedTypeParametersUsages) { - //TODO + classCodegen.reifiedTypeParametersUsages.propagateChildUsagesWithinContext(reifiedTypeParametersUsages) { + irFunction.typeParameters.filter { it.isReified }.map { it.name.asString() }.toSet() + } } override fun pushClosureOnStack( @@ -1208,12 +1223,12 @@ class ExpressionCodegen( /* From ExpressionCodegen.java */ private fun putReifiedOperationMarkerIfTypeIsReifiedParameter( type: IrType, operationKind: ReifiedTypeInliner.OperationKind, v: InstructionAdapter, - codegen: BaseExpressionCodegen? + codegen: ExpressionCodegen? ) { val typeParameterAndReificationArgument = extractReificationArgumentWithParameter(type) if (typeParameterAndReificationArgument != null && typeParameterAndReificationArgument.first.isReified) { val irTypeParameter = typeParameterAndReificationArgument.first - codegen?.consumeReifiedOperationMarker(irTypeParameter.descriptor) + codegen?.consumeReifiedOperationMarker(irTypeParameter) ReifiedTypeInliner.putReifiedOperationMarker( operationKind, typeParameterAndReificationArgument.second.toReificationArgument(), v ) diff --git a/compiler/testData/codegen/box/nullCheckOptimization/kt22410.kt b/compiler/testData/codegen/box/nullCheckOptimization/kt22410.kt index 0ca767a5fc9..05c2ca4c594 100644 --- a/compiler/testData/codegen/box/nullCheckOptimization/kt22410.kt +++ b/compiler/testData/codegen/box/nullCheckOptimization/kt22410.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR fun box(): String { defineFunc() diff --git a/compiler/testData/codegen/box/reified/anonymousObject.kt b/compiler/testData/codegen/box/reified/anonymousObject.kt index da0f0dcf496..c8323753642 100644 --- a/compiler/testData/codegen/box/reified/anonymousObject.kt +++ b/compiler/testData/codegen/box/reified/anonymousObject.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_RUNTIME diff --git a/compiler/testData/codegen/box/reified/nestedReified.kt b/compiler/testData/codegen/box/reified/nestedReified.kt index 166b9f30f55..7bcd268f3c8 100644 --- a/compiler/testData/codegen/box/reified/nestedReified.kt +++ b/compiler/testData/codegen/box/reified/nestedReified.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_RUNTIME diff --git a/compiler/testData/codegen/box/reified/nonInlineableLambdaInReifiedFunction.kt b/compiler/testData/codegen/box/reified/nonInlineableLambdaInReifiedFunction.kt index 48f1da31d84..abaa5651861 100644 --- a/compiler/testData/codegen/box/reified/nonInlineableLambdaInReifiedFunction.kt +++ b/compiler/testData/codegen/box/reified/nonInlineableLambdaInReifiedFunction.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_RUNTIME diff --git a/compiler/testData/codegen/box/reified/recursiveNonInlineableLambda.kt b/compiler/testData/codegen/box/reified/recursiveNonInlineableLambda.kt index e134f480aa3..0962de0b01e 100644 --- a/compiler/testData/codegen/box/reified/recursiveNonInlineableLambda.kt +++ b/compiler/testData/codegen/box/reified/recursiveNonInlineableLambda.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_RUNTIME diff --git a/compiler/testData/codegen/box/reified/reifiedInlineFunOfObjectWithinReified.kt b/compiler/testData/codegen/box/reified/reifiedInlineFunOfObjectWithinReified.kt index 18283585b70..6abdf91192c 100644 --- a/compiler/testData/codegen/box/reified/reifiedInlineFunOfObjectWithinReified.kt +++ b/compiler/testData/codegen/box/reified/reifiedInlineFunOfObjectWithinReified.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_RUNTIME diff --git a/compiler/testData/codegen/boxInline/enum/valueOfCapturedType.kt b/compiler/testData/codegen/boxInline/enum/valueOfCapturedType.kt index 14bc52fb041..c0519a81e3e 100644 --- a/compiler/testData/codegen/boxInline/enum/valueOfCapturedType.kt +++ b/compiler/testData/codegen/boxInline/enum/valueOfCapturedType.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // FILE: 1.kt // WITH_RUNTIME package test diff --git a/compiler/testData/codegen/boxInline/enum/valueOfChainCapturedType.kt b/compiler/testData/codegen/boxInline/enum/valueOfChainCapturedType.kt index 77892c6d74d..74b5f0f3bb5 100644 --- a/compiler/testData/codegen/boxInline/enum/valueOfChainCapturedType.kt +++ b/compiler/testData/codegen/boxInline/enum/valueOfChainCapturedType.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // FILE: 1.kt // WITH_RUNTIME package test diff --git a/compiler/testData/codegen/boxInline/enum/valuesCapturedType.kt b/compiler/testData/codegen/boxInline/enum/valuesCapturedType.kt index 7e39527a4b9..de5782e0353 100644 --- a/compiler/testData/codegen/boxInline/enum/valuesCapturedType.kt +++ b/compiler/testData/codegen/boxInline/enum/valuesCapturedType.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // FILE: 1.kt // WITH_RUNTIME // KJS_WITH_FULL_RUNTIME diff --git a/compiler/testData/codegen/boxInline/enum/valuesChainCapturedType.kt b/compiler/testData/codegen/boxInline/enum/valuesChainCapturedType.kt index bd3ed21251d..ef372571afc 100644 --- a/compiler/testData/codegen/boxInline/enum/valuesChainCapturedType.kt +++ b/compiler/testData/codegen/boxInline/enum/valuesChainCapturedType.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // FILE: 1.kt // WITH_RUNTIME // KJS_WITH_FULL_RUNTIME diff --git a/compiler/testData/codegen/boxInline/reified/defaultLambda/chain.kt b/compiler/testData/codegen/boxInline/reified/defaultLambda/chain.kt index a69db2d327b..f1d5d5da942 100644 --- a/compiler/testData/codegen/boxInline/reified/defaultLambda/chain.kt +++ b/compiler/testData/codegen/boxInline/reified/defaultLambda/chain.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default diff --git a/compiler/testData/codegen/boxInline/reified/defaultLambda/nested.kt b/compiler/testData/codegen/boxInline/reified/defaultLambda/nested.kt index 85d5f0cae88..5b8159e93e9 100644 --- a/compiler/testData/codegen/boxInline/reified/defaultLambda/nested.kt +++ b/compiler/testData/codegen/boxInline/reified/defaultLambda/nested.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default diff --git a/compiler/testData/codegen/boxInline/reified/defaultLambda/nested2.kt b/compiler/testData/codegen/boxInline/reified/defaultLambda/nested2.kt index 0d712e811f6..8ec501bb4bd 100644 --- a/compiler/testData/codegen/boxInline/reified/defaultLambda/nested2.kt +++ b/compiler/testData/codegen/boxInline/reified/defaultLambda/nested2.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default diff --git a/compiler/testData/codegen/boxInline/reified/defaultLambda/nested2Static.kt b/compiler/testData/codegen/boxInline/reified/defaultLambda/nested2Static.kt index 435121ada92..4156c4365fa 100644 --- a/compiler/testData/codegen/boxInline/reified/defaultLambda/nested2Static.kt +++ b/compiler/testData/codegen/boxInline/reified/defaultLambda/nested2Static.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default diff --git a/compiler/testData/codegen/boxInline/reified/defaultLambda/nestedStatic.kt b/compiler/testData/codegen/boxInline/reified/defaultLambda/nestedStatic.kt index 4c4c99220ef..ba3540939dc 100644 --- a/compiler/testData/codegen/boxInline/reified/defaultLambda/nestedStatic.kt +++ b/compiler/testData/codegen/boxInline/reified/defaultLambda/nestedStatic.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default diff --git a/compiler/testData/codegen/boxInline/reified/defaultLambda/simple.kt b/compiler/testData/codegen/boxInline/reified/defaultLambda/simple.kt index cf070c79d85..e4e9095672f 100644 --- a/compiler/testData/codegen/boxInline/reified/defaultLambda/simple.kt +++ b/compiler/testData/codegen/boxInline/reified/defaultLambda/simple.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default diff --git a/compiler/testData/codegen/boxInline/reified/defaultLambda/transitiveChain.kt b/compiler/testData/codegen/boxInline/reified/defaultLambda/transitiveChain.kt index 436eb44a332..5125aedda2b 100644 --- a/compiler/testData/codegen/boxInline/reified/defaultLambda/transitiveChain.kt +++ b/compiler/testData/codegen/boxInline/reified/defaultLambda/transitiveChain.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default diff --git a/compiler/testData/codegen/boxInline/reified/defaultLambda/transitiveChainStatic.kt b/compiler/testData/codegen/boxInline/reified/defaultLambda/transitiveChainStatic.kt index ba2fe74dcb1..45a2764dc40 100644 --- a/compiler/testData/codegen/boxInline/reified/defaultLambda/transitiveChainStatic.kt +++ b/compiler/testData/codegen/boxInline/reified/defaultLambda/transitiveChainStatic.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default diff --git a/compiler/testData/codegen/boxInline/reified/kt6988.kt b/compiler/testData/codegen/boxInline/reified/kt6988.kt index 9c83ba13cac..43c3fe42e2d 100644 --- a/compiler/testData/codegen/boxInline/reified/kt6988.kt +++ b/compiler/testData/codegen/boxInline/reified/kt6988.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // FILE: 1.kt // WITH_REFLECT diff --git a/compiler/testData/codegen/boxInline/reified/kt6988_2.kt b/compiler/testData/codegen/boxInline/reified/kt6988_2.kt index 11c32611e2c..669fa7e0897 100644 --- a/compiler/testData/codegen/boxInline/reified/kt6988_2.kt +++ b/compiler/testData/codegen/boxInline/reified/kt6988_2.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // FILE: 1.kt // WITH_REFLECT diff --git a/compiler/testData/codegen/boxInline/reified/kt6990.kt b/compiler/testData/codegen/boxInline/reified/kt6990.kt index 37740a83cdf..b6bb3de3f8d 100644 --- a/compiler/testData/codegen/boxInline/reified/kt6990.kt +++ b/compiler/testData/codegen/boxInline/reified/kt6990.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // FILE: 1.kt // WITH_REFLECT diff --git a/compiler/testData/codegen/boxInline/reified/kt7017.kt b/compiler/testData/codegen/boxInline/reified/kt7017.kt index f575a30b6ee..c5bdcbad2af 100644 --- a/compiler/testData/codegen/boxInline/reified/kt7017.kt +++ b/compiler/testData/codegen/boxInline/reified/kt7017.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // FILE: 1.kt package test diff --git a/compiler/testData/codegen/boxInline/reified/kt9637.kt b/compiler/testData/codegen/boxInline/reified/kt9637.kt index bd3b86e9488..42ade47a265 100644 --- a/compiler/testData/codegen/boxInline/reified/kt9637.kt +++ b/compiler/testData/codegen/boxInline/reified/kt9637.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // FILE: 1.kt // WITH_REFLECT diff --git a/compiler/testData/codegen/boxInline/reified/kt9637_2.kt b/compiler/testData/codegen/boxInline/reified/kt9637_2.kt index 61b95cd753e..c73c2638623 100644 --- a/compiler/testData/codegen/boxInline/reified/kt9637_2.kt +++ b/compiler/testData/codegen/boxInline/reified/kt9637_2.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // FILE: 1.kt package test