From c357967c2ca8f26357490d0bd498fdd1b1f9b32e Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Thu, 7 Feb 2019 19:34:46 +0100 Subject: [PATCH] JVM IR: generate Kotlin metadata Introduce MetadataSource as a way to store the original descriptor for any element (before any lowerings) and maintain it until the end of the codegen where it's used in generating the metadata. Note that JVM signatures written to the metadata are formed from the _resulting_ generated elements, not by mapping the original descriptors. Some corner cases are not supported yet, namely properties declared in companion objects, synthetic methods for property annotations, JvmPackageName, etc. #KT-29119 Fixed --- .../JvmSerializationBindings.java | 2 +- .../common/lower/LocalDeclarationsLowering.kt | 3 + .../backend/jvm/codegen/ClassCodegen.kt | 58 +++++++++++++++++-- .../backend/jvm/codegen/FunctionCodegen.kt | 12 ++-- .../jvm/codegen/IrSourceCompilerForInline.kt | 2 +- .../jvm/descriptors/JvmDeclarationFactory.kt | 2 + .../backend/jvm/lower/EnumClassLowering.kt | 1 + .../backend/jvm/lower/FileClassLowering.kt | 1 + .../MoveCompanionObjectFieldsLowering.kt | 5 +- .../backend/jvm/lower/RenameFieldsLowering.kt | 1 + .../psi2ir/generators/ModuleGenerator.kt | 8 ++- .../kotlin/ir/declarations/IrDeclaration.kt | 6 +- .../kotlin/ir/declarations/IrField.kt | 4 +- .../kotlin/ir/declarations/IrFile.kt | 4 +- .../kotlin/ir/declarations/IrFunction.kt | 2 + .../kotlin/ir/declarations/MetadataSource.kt | 21 +++++++ .../ir/declarations/impl/IrClassImpl.kt | 2 + .../ir/declarations/impl/IrDeclarationBase.kt | 6 +- .../ir/declarations/impl/IrFieldImpl.kt | 5 +- .../kotlin/ir/declarations/impl/IrFileImpl.kt | 3 + .../ir/declarations/impl/IrFunctionBase.kt | 9 ++- .../lazy/IrLazyDeclarationBase.kt | 12 ++-- .../jetbrains/kotlin/ir/util/SymbolTable.kt | 22 +++++-- .../box/annotations/annotatedObjectLiteral.kt | 1 - .../collectionLiteralsWithConstants.kt | 1 - .../box/jvmField/topLevelFieldReflection.kt | 1 - .../box/jvmName/annotationProperties.kt | 1 - .../annotationRetentionAnnotation.kt | 1 - .../onTypes/differentArgumentTypes.kt | 1 - .../box/reflection/annotations/retentions.kt | 1 - .../annotations/simpleFunAnnotation.kt | 1 - .../annotations/simpleParamAnnotation.kt | 1 - .../call/bound/extensionFunction.kt | 1 - .../box/reflection/call/protectedMembers.kt | 1 - .../callBy/boundExtensionFunction.kt | 1 - .../callBy/boundJvmStaticInObject.kt | 1 - .../box/reflection/callBy/companionObject.kt | 1 - .../callBy/jvmStaticInCompanionObject.kt | 1 - .../reflection/callBy/jvmStaticInObject.kt | 1 - .../callBy/manyArgumentsOnlyOneDefault.kt | 1 - .../reflection/callBy/manyMaskArguments.kt | 1 - .../callBy/nonDefaultParameterOmitted.kt | 1 - .../box/reflection/classes/companionObject.kt | 1 - .../box/reflection/classes/createInstance.kt | 1 - .../box/reflection/classes/declaredMembers.kt | 1 - .../box/reflection/classes/objectInstance.kt | 1 - .../reflection/classes/sealedSubclasses.kt | 1 - .../classesWithoutConstructors.kt | 1 - .../box/reflection/constructors/enumEntry.kt | 1 - .../constructors/primaryConstructor.kt | 1 - .../createAnnotation/enumKClassAnnotation.kt | 1 - .../equalsHashCodeToString.kt | 1 - .../floatingPointParameters.kt | 1 - .../createAnnotation/parameterNamedEquals.kt | 1 - .../createAnnotation/primitivesAndArrays.kt | 1 - .../functions/declaredVsInheritedFunctions.kt | 1 - .../functions/genericOverriddenFunction.kt | 1 - .../fakeOverrides/javaFieldGetterSetter.kt | 1 - .../jvmStatic/companionObjectFunction.kt | 1 - .../mapping/topLevelFunctionOtherFile.kt | 1 - .../types/annotationConstructorParameters.kt | 1 - .../mapping/types/genericArrayElementType.kt | 1 - .../mapping/types/innerGenericTypeArgument.kt | 1 - .../types/parameterizedTypeArgument.kt | 1 - .../reflection/mapping/types/supertypes.kt | 1 - .../mapping/types/withNullability.kt | 1 - .../methodsFromAny/fakeOverrideToString.kt | 2 +- .../methodsFromAny/functionToString.kt | 1 - .../methodsFromAny/memberExtensionToString.kt | 1 - .../methodsFromAny/typeEqualsHashCode.kt | 1 - .../methodsFromAny/typeParametersToString.kt | 1 - .../typeToStringInnerGeneric.kt | 1 - .../box/reflection/modifiers/classModality.kt | 1 - .../reflection/modifiers/classVisibility.kt | 1 - .../box/reflection/modifiers/classes.kt | 1 - .../reflection/modifiers/typeParameters.kt | 1 - .../parameters/boundInnerClassConstructor.kt | 1 - .../parameters/boundObjectMemberReferences.kt | 1 - .../parameters/findParameterByName.kt | 1 - .../properties/accessors/memberExtensions.kt | 1 - .../reflection/properties/allVsDeclared.kt | 1 - .../declaredVsInheritedProperties.kt | 1 - ...getExtensionPropertiesMutableVsReadonly.kt | 1 - .../memberAndMemberExtensionWithSameName.kt | 1 - .../properties/privateToThisAccessors.kt | 1 - .../properties/simpleGetProperties.kt | 1 - .../supertypes/builtInClassSupertypes.kt | 1 - .../reflection/supertypes/simpleSupertypes.kt | 1 - .../typeParameters/declarationSiteVariance.kt | 1 - .../typeParameters/typeParametersAndNames.kt | 1 - .../reflection/typeParameters/upperBounds.kt | 1 - .../box/reflection/types/classifierIsClass.kt | 1 - .../types/classifierIsTypeParameter.kt | 1 - .../types/classifiersOfBuiltInTypes.kt | 1 - .../types/createType/typeParameter.kt | 1 - .../reflection/types/innerGenericArguments.kt | 1 - .../box/reflection/types/jvmErasureOfClass.kt | 1 - .../types/platformTypeNotEqualToKotlinType.kt | 1 - .../types/subtyping/platformType.kt | 1 - .../types/subtyping/simpleGenericTypes.kt | 1 - .../types/subtyping/simpleSubtypeSupertype.kt | 1 - .../types/subtyping/typeProjection.kt | 1 - .../box/reflection/types/useSiteVariance.kt | 1 - .../box/reflection/types/withNullability.kt | 1 - .../assigningArrayToVarargInAnnotation.kt | 1 - ...annotationsViaActualTypeAliasFromBinary.kt | 1 - .../bytecodeText/mangling/parentheses.kt | 1 - .../mangling/parenthesesNoSanitize.kt | 2 - 108 files changed, 157 insertions(+), 121 deletions(-) create mode 100644 compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/MetadataSource.kt diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/serialization/JvmSerializationBindings.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/serialization/JvmSerializationBindings.java index 1e835eda51f..3eb4c9ba1be 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/serialization/JvmSerializationBindings.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/serialization/JvmSerializationBindings.java @@ -36,7 +36,7 @@ public final class JvmSerializationBindings { public static final SerializationMappingSlice SYNTHETIC_METHOD_FOR_PROPERTY = SerializationMappingSlice.create(); - static final class SerializationMappingSlice extends BasicWritableSlice { + public static final class SerializationMappingSlice extends BasicWritableSlice { public SerializationMappingSlice() { super(Slices.ONLY_REWRITE_TO_EQUAL, false); } diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt index e344389dc21..2c699a01710 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt @@ -631,6 +631,9 @@ class LocalDeclarationsLowering( newDeclaration.valueParameters += createTransformedValueParameters(capturedValues, oldDeclaration, newDeclaration) newDeclaration.recordTransformedValueParameters(constructorContext) + + newDeclaration.metadata = oldDeclaration.metadata + transformedDeclarations[oldDeclaration] = newDeclaration } 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 e481f551598..06379292ebd 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 @@ -22,10 +22,14 @@ 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.SourceMapper +import org.jetbrains.kotlin.codegen.serialization.JvmSerializationBindings +import org.jetbrains.kotlin.codegen.serialization.JvmSerializerExtension import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.util.dump +import org.jetbrains.kotlin.ir.util.getPackageFragment import org.jetbrains.kotlin.load.java.JavaVisibilities +import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.resolve.DescriptorUtils @@ -33,11 +37,11 @@ import org.jetbrains.kotlin.resolve.DescriptorUtils.isTopLevelDeclaration import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOrigin import org.jetbrains.kotlin.resolve.jvm.diagnostics.OtherOrigin import org.jetbrains.kotlin.resolve.source.getPsi +import org.jetbrains.kotlin.serialization.DescriptorSerializer import org.jetbrains.kotlin.types.ErrorUtils import org.jetbrains.org.objectweb.asm.Opcodes import org.jetbrains.org.objectweb.asm.Type import java.io.File -import java.lang.RuntimeException open class ClassCodegen protected constructor( internal val irClass: IrClass, @@ -76,6 +80,14 @@ open class ClassCodegen protected constructor( private var sourceMapper: DefaultSourceMapper? = null + private val serializerExtension = JvmSerializerExtension(visitor.serializationBindings, state) + private val serializer: DescriptorSerializer? = + when (val metadata = irClass.metadata) { + is MetadataSource.Class -> DescriptorSerializer.create(metadata.descriptor, serializerExtension, parentClassCodegen?.serializer) + is MetadataSource.File -> DescriptorSerializer.createTopLevel(serializerExtension) + else -> null + } + fun generate() { val superClassInfo = SuperClassInfo.getSuperClassInfo(descriptor, typeMapper) val signature = ImplementationBodyCodegen.signature(descriptor, type, superClassInfo, typeMapper) @@ -98,9 +110,36 @@ open class ClassCodegen protected constructor( generateDeclaration(it) } + generateKotlinMetadataAnnotation() + done() } + private fun generateKotlinMetadataAnnotation() { + when (val metadata = irClass.metadata) { + is MetadataSource.Class -> { + val classProto = serializer!!.classProto(metadata.descriptor).build() + writeKotlinMetadata(visitor, state, KotlinClassHeader.Kind.CLASS, 0) { + AsmUtil.writeAnnotationData(it, serializer, classProto) + } + } + is MetadataSource.File -> { + val packageFqName = irClass.getPackageFragment()!!.fqName + val packageProto = serializer!!.packagePartProto(packageFqName, metadata.descriptors) + + serializerExtension.serializeJvmPackage(packageProto, type) + + writeKotlinMetadata(visitor, state, KotlinClassHeader.Kind.FILE_FACADE, 0) { + AsmUtil.writeAnnotationData(it, serializer, packageProto.build()) + // TODO: JvmPackageName + } + } + else -> { + writeSyntheticClassMetadata(visitor, state) + } + } + } + private fun done() { writeInnerClasses() @@ -158,23 +197,34 @@ open class ClassCodegen protected constructor( private fun generateField(field: IrField) { if (field.origin == IrDeclarationOrigin.FAKE_OVERRIDE) return + val fieldType = typeMapper.mapType(field.descriptor) val fieldSignature = typeMapper.mapFieldSignature(field.descriptor.type, field.descriptor) + val fieldName = field.descriptor.name.asString() val fv = visitor.newField( - field.OtherOrigin, field.descriptor.calculateCommonFlags(), field.descriptor.name.asString(), fieldType.descriptor, + field.OtherOrigin, field.descriptor.calculateCommonFlags(), fieldName, fieldType.descriptor, fieldSignature, null/*TODO support default values*/ ) if (field.origin == IrDeclarationOrigin.FIELD_FOR_ENUM_ENTRY) { AnnotationCodegen.forField(fv, this, state).genAnnotations(field.descriptor, null) - } else { + } + val descriptor = field.metadata?.descriptor + if (descriptor != null) { + visitor.serializationBindings.put(JvmSerializationBindings.FIELD_FOR_PROPERTY, descriptor, fieldType to fieldName) } } private fun generateMethod(method: IrFunction) { if (method.origin == IrDeclarationOrigin.FAKE_OVERRIDE) return - FunctionCodegen(method, this).generate() + + val signature = FunctionCodegen(method, this).generate() + + val descriptor = method.metadata?.descriptor + if (descriptor != null) { + visitor.serializationBindings.put(JvmSerializationBindings.METHOD_FOR_FUNCTION, descriptor, signature.asmMethod) + } } private fun writeInnerClasses() { diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/FunctionCodegen.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/FunctionCodegen.kt index bd4ca54e47e..0dfcae605f4 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/FunctionCodegen.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/FunctionCodegen.kt @@ -32,15 +32,14 @@ open class FunctionCodegen(private val irFunction: IrFunction, private val class val descriptor = irFunction.descriptor - fun generate() { + fun generate(): JvmMethodGenericSignature = try { doGenerate() } catch (e: Throwable) { throw RuntimeException("${e.message} while generating code for:\n${irFunction.dump()}", e) } - } - private fun doGenerate() { + private fun doGenerate(): JvmMethodGenericSignature { val signature = classCodegen.typeMapper.mapSignatureWithGeneric(descriptor, OwnerKind.IMPLEMENTATION) val flags = calculateMethodFlags(irFunction.isStatic) @@ -54,11 +53,12 @@ open class FunctionCodegen(private val irFunction: IrFunction, private val class if (!state.classBuilderMode.generateBodies || flags.and(Opcodes.ACC_ABSTRACT) != 0 || irFunction.isExternal) { generateAnnotationDefaultValueIfNeeded(methodVisitor) methodVisitor.visitEnd() - return + } else { + val frameMap = createFrameMapWithReceivers(classCodegen.state, irFunction, signature) + ExpressionCodegen(irFunction, frameMap, InstructionAdapter(methodVisitor), classCodegen).generate() } - val frameMap = createFrameMapWithReceivers(classCodegen.state, irFunction, signature) - ExpressionCodegen(irFunction, frameMap, InstructionAdapter(methodVisitor), classCodegen).generate() + return signature } private fun calculateMethodFlags(isStatic: Boolean): Int { 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 f6fa2c74de2..fcecebf418d 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 @@ -200,7 +200,7 @@ class IrSourceCompilerForInline( } override fun getSerializationBindings(): JvmSerializationBindings { - TODO("not implemented") + return JvmSerializationBindings() } override fun newAnnotation(desc: String, visible: Boolean): AnnotationVisitor { diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/descriptors/JvmDeclarationFactory.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/descriptors/JvmDeclarationFactory.kt index 34d97280c02..ad4cfc95937 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/descriptors/JvmDeclarationFactory.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/descriptors/JvmDeclarationFactory.kt @@ -137,6 +137,8 @@ class JvmDeclarationFactory( } } } + + constructor.metadata = oldConstructor.metadata } } diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/EnumClassLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/EnumClassLowering.kt index 09c0e7a792d..32553ed9cad 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/EnumClassLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/EnumClassLowering.kt @@ -139,6 +139,7 @@ private class EnumClassLowering(val context: JvmBackendContext) : ClassLoweringP constructorDescriptor.valueParameters.forEach { loweredEnumConstructorParameters[it] = valueParameters[2 + it.index] } + metadata = enumConstructor.metadata } } diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/FileClassLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/FileClassLowering.kt index d9096d8e379..3ca40fa08db 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/FileClassLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/FileClassLowering.kt @@ -90,6 +90,7 @@ private class FileClassLowering(val context: JvmBackendContext) : FileLoweringPa createImplicitParameterDeclarationWithWrappedDescriptor() // TODO: figure out why reparenting leads to failing tests. // fileClassMembers.forEach { it.parent = this } + metadata = irFile.metadata val partClassType = AsmUtil.asmTypeByFqNameWithoutInnerClasses(fileClassInfo.fileClassFqName) val facadeClassType = diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/MoveCompanionObjectFieldsLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/MoveCompanionObjectFieldsLowering.kt index d9dbd288e9d..30d75c8facd 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/MoveCompanionObjectFieldsLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/MoveCompanionObjectFieldsLowering.kt @@ -19,7 +19,9 @@ import org.jetbrains.kotlin.ir.declarations.impl.IrAnonymousInitializerImpl import org.jetbrains.kotlin.ir.declarations.impl.IrFieldImpl import org.jetbrains.kotlin.ir.declarations.impl.IrVariableImpl import org.jetbrains.kotlin.ir.expressions.* -import org.jetbrains.kotlin.ir.expressions.impl.* +import org.jetbrains.kotlin.ir.expressions.impl.IrGetFieldImpl +import org.jetbrains.kotlin.ir.expressions.impl.IrGetValueImpl +import org.jetbrains.kotlin.ir.expressions.impl.IrSetFieldImpl import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol import org.jetbrains.kotlin.ir.symbols.impl.IrAnonymousInitializerSymbolImpl import org.jetbrains.kotlin.ir.symbols.impl.IrFieldSymbolImpl @@ -181,6 +183,7 @@ private class MoveCompanionObjectFieldsLowering(val context: CommonBackendContex descriptor.bind(this) parent = fieldParent annotations.addAll(oldField.annotations) + metadata = oldField.metadata } val oldInitializer = oldField.initializer if (oldInitializer != null) { diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/RenameFieldsLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/RenameFieldsLowering.kt index 7f87b9ad6cd..35387ec8def 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/RenameFieldsLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/RenameFieldsLowering.kt @@ -98,6 +98,7 @@ private class FieldRenamer(private val newNames: Map) : IrElement descriptor.bind(it) it.parent = declaration.parent it.initializer = declaration.initializer?.transform(this, null) + it.metadata = declaration.metadata newSymbols[declaration] = symbol } diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ModuleGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ModuleGenerator.kt index 8f24e7474bb..841ef769dd1 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ModuleGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ModuleGenerator.kt @@ -16,13 +16,15 @@ package org.jetbrains.kotlin.psi2ir.generators +import org.jetbrains.kotlin.backend.common.CodegenUtil import org.jetbrains.kotlin.ir.declarations.IrFile import org.jetbrains.kotlin.ir.declarations.IrModuleFragment +import org.jetbrains.kotlin.ir.declarations.MetadataSource import org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl import org.jetbrains.kotlin.ir.declarations.impl.IrModuleFragmentImpl import org.jetbrains.kotlin.ir.util.ExternalDependenciesGenerator -import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.ir.util.IrDeserializer +import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.lazy.descriptors.findPackageFragmentForFile @@ -73,7 +75,9 @@ class ModuleGenerator(override val context: GeneratorContext) : Generator { private fun createEmptyIrFile(ktFile: KtFile): IrFileImpl { val fileEntry = context.sourceManager.getOrCreateFileEntry(ktFile) val packageFragmentDescriptor = context.moduleDescriptor.findPackageFragmentForFile(ktFile)!! - val irFile = IrFileImpl(fileEntry, packageFragmentDescriptor) + val irFile = IrFileImpl(fileEntry, packageFragmentDescriptor).apply { + metadata = MetadataSource.File(CodegenUtil.getMemberDescriptorsToGenerate(ktFile, context.bindingContext)) + } context.sourceManager.putFileEntry(irFile, fileEntry) return irFile } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclaration.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclaration.kt index 6e76883307b..185fb47e465 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclaration.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclaration.kt @@ -28,7 +28,11 @@ interface IrSymbolOwner : IrElement { val symbol: IrSymbol } -interface IrDeclaration : IrStatement, IrAnnotationContainer { +interface IrMetadataSourceOwner : IrElement { + val metadata: MetadataSource? +} + +interface IrDeclaration : IrStatement, IrAnnotationContainer, IrMetadataSourceOwner { val descriptor: DeclarationDescriptor var origin: IrDeclarationOrigin diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrField.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrField.kt index 0fdfe1efc6d..5c1ba025c40 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrField.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrField.kt @@ -11,7 +11,7 @@ import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol import org.jetbrains.kotlin.ir.types.IrType interface IrField : IrSymbolDeclaration, IrOverridableDeclaration, - IrDeclarationWithName, IrDeclarationWithVisibility, IrDeclarationParent { + IrDeclarationWithName, IrDeclarationWithVisibility, IrDeclarationParent { override val descriptor: PropertyDescriptor val type: IrType @@ -21,4 +21,6 @@ interface IrField : IrSymbolDeclaration, IrOverridableDeclaration var initializer: IrExpressionBody? var correspondingProperty: IrProperty? + + override val metadata: MetadataSource.Property? } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFile.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFile.kt index 83ef8e28248..6df5d3aa37b 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFile.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFile.kt @@ -38,12 +38,14 @@ interface IrExternalPackageFragment : IrPackageFragment { override val symbol: IrExternalPackageFragmentSymbol } -interface IrFile : IrPackageFragment, IrAnnotationContainer { +interface IrFile : IrPackageFragment, IrAnnotationContainer, IrMetadataSourceOwner { override val symbol: IrFileSymbol val fileEntry: SourceManager.FileEntry val fileAnnotations: MutableList + override val metadata: MetadataSource.File? + override fun transform(transformer: IrElementTransformer, data: D): IrFile = accept(transformer, data) as IrFile } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFunction.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFunction.kt index 3547a2b57a5..6d656101d07 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFunction.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFunction.kt @@ -38,6 +38,8 @@ interface IrFunction : val valueParameters: MutableList var body: IrBody? + + override val metadata: MetadataSource.Function? } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/MetadataSource.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/MetadataSource.kt new file mode 100644 index 00000000000..4cac493738b --- /dev/null +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/MetadataSource.kt @@ -0,0 +1,21 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. 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.ir.declarations + +import org.jetbrains.kotlin.descriptors.ClassDescriptor +import org.jetbrains.kotlin.descriptors.DeclarationDescriptor +import org.jetbrains.kotlin.descriptors.FunctionDescriptor +import org.jetbrains.kotlin.descriptors.PropertyDescriptor + +interface MetadataSource { + class Class(val descriptor: ClassDescriptor) : MetadataSource + + class File(val descriptors: List) : MetadataSource + + class Function(val descriptor: FunctionDescriptor) : MetadataSource + + class Property(val descriptor: PropertyDescriptor) : MetadataSource +} diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrClassImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrClassImpl.kt index 1c326c29a45..8a24521b175 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrClassImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrClassImpl.kt @@ -102,6 +102,8 @@ class IrClassImpl( override val superTypes: MutableList = SmartList() + override var metadata: MetadataSource? = null + override fun accept(visitor: IrElementVisitor, data: D): R = visitor.visitClass(this, data) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrDeclarationBase.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrDeclarationBase.kt index ddab927e41e..c2809da09c2 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrDeclarationBase.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrDeclarationBase.kt @@ -20,6 +20,7 @@ import org.jetbrains.kotlin.ir.IrElementBase import org.jetbrains.kotlin.ir.declarations.IrDeclaration import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent +import org.jetbrains.kotlin.ir.declarations.MetadataSource import org.jetbrains.kotlin.ir.expressions.IrCall abstract class IrDeclarationBase( @@ -32,4 +33,7 @@ abstract class IrDeclarationBase( override lateinit var parent: IrDeclarationParent override val annotations: MutableList = ArrayList() -} \ No newline at end of file + + override val metadata: MetadataSource? + get() = null +} diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFieldImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFieldImpl.kt index f7c5220293d..746dcb80beb 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFieldImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFieldImpl.kt @@ -21,6 +21,7 @@ import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin import org.jetbrains.kotlin.ir.declarations.IrField import org.jetbrains.kotlin.ir.declarations.IrProperty +import org.jetbrains.kotlin.ir.declarations.MetadataSource import org.jetbrains.kotlin.ir.expressions.IrExpressionBody import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol import org.jetbrains.kotlin.ir.symbols.impl.IrFieldSymbolImpl @@ -90,6 +91,8 @@ class IrFieldImpl( override var correspondingProperty: IrProperty? = null override val overriddenSymbols: MutableList = mutableListOf() + override var metadata: MetadataSource.Property? = null + override fun accept(visitor: IrElementVisitor, data: D): R { return visitor.visitField(this, data) } @@ -101,4 +104,4 @@ class IrFieldImpl( override fun transformChildren(transformer: IrElementTransformer, data: D) { initializer = initializer?.transform(transformer, data) } -} \ No newline at end of file +} diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFileImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFileImpl.kt index 7f1bbb749d7..d018c25accd 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFileImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFileImpl.kt @@ -22,6 +22,7 @@ import org.jetbrains.kotlin.ir.IrElementBase import org.jetbrains.kotlin.ir.SourceManager import org.jetbrains.kotlin.ir.declarations.IrDeclaration import org.jetbrains.kotlin.ir.declarations.IrFile +import org.jetbrains.kotlin.ir.declarations.MetadataSource import org.jetbrains.kotlin.ir.expressions.IrCall import org.jetbrains.kotlin.ir.symbols.IrFileSymbol import org.jetbrains.kotlin.ir.symbols.impl.IrFileSymbolImpl @@ -72,6 +73,8 @@ class IrFileImpl( override val annotations: MutableList = ArrayList() + override var metadata: MetadataSource.File? = null + override fun accept(visitor: IrElementVisitor, data: D): R = visitor.visitFile(this, data) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionBase.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionBase.kt index 93404f42ca4..87efe702038 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionBase.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionBase.kt @@ -17,10 +17,7 @@ package org.jetbrains.kotlin.ir.declarations.impl import org.jetbrains.kotlin.descriptors.Visibility -import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin -import org.jetbrains.kotlin.ir.declarations.IrFunction -import org.jetbrains.kotlin.ir.declarations.IrTypeParameter -import org.jetbrains.kotlin.ir.declarations.IrValueParameter +import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.expressions.IrBody import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.impl.IrUninitializedType @@ -58,6 +55,8 @@ abstract class IrFunctionBase( final override var body: IrBody? = null + override var metadata: MetadataSource.Function? = null + override fun acceptChildren(visitor: IrElementVisitor, data: D) { typeParameters.forEach { it.accept(visitor, data) } @@ -77,4 +76,4 @@ abstract class IrFunctionBase( body = body?.transform(transformer, data) } -} \ No newline at end of file +} diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyDeclarationBase.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyDeclarationBase.kt index 01bcbb6b68a..eba78eec437 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyDeclarationBase.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyDeclarationBase.kt @@ -8,17 +8,13 @@ package org.jetbrains.kotlin.ir.declarations.lazy import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.ir.IrElementBase import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET -import org.jetbrains.kotlin.ir.declarations.IrDeclaration -import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin -import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent -import org.jetbrains.kotlin.ir.declarations.IrValueParameter +import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.impl.IrValueParameterImpl import org.jetbrains.kotlin.ir.expressions.IrCall import org.jetbrains.kotlin.ir.util.DeclarationStubGenerator import org.jetbrains.kotlin.ir.util.TypeTranslator import org.jetbrains.kotlin.resolve.scopes.MemberScope import org.jetbrains.kotlin.types.KotlinType -import kotlin.reflect.KProperty abstract class IrLazyDeclarationBase( startOffset: Int, @@ -53,6 +49,10 @@ abstract class IrLazyDeclarationBase( override val annotations: MutableList = arrayListOf() + override var metadata: Nothing? + get() = null + set(_) = error("We should never need to store metadata of external declarations.") + private fun createLazyParent(): IrDeclarationParent? { val currentDescriptor = descriptor @@ -67,4 +67,4 @@ abstract class IrLazyDeclarationBase( else -> throw AssertionError("Package or class expected: $containingDeclaration; for $currentDescriptor") } } -} \ No newline at end of file +} diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/SymbolTable.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/SymbolTable.kt index f3532b16bf1..689731a7624 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/SymbolTable.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/SymbolTable.kt @@ -233,7 +233,9 @@ open class SymbolTable : ReferenceSymbolTable { fun declareClass( startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassDescriptor, modality: Modality = descriptor.modality, - classFactory: (IrClassSymbol) -> IrClass = { IrClassImpl(startOffset, endOffset, origin, it, modality) } + classFactory: (IrClassSymbol) -> IrClass = { + IrClassImpl(startOffset, endOffset, origin, it, modality).apply { metadata = MetadataSource.Class(it.descriptor) } + } ): IrClass { return classSymbolTable.declare( descriptor, @@ -252,7 +254,11 @@ open class SymbolTable : ReferenceSymbolTable { endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassConstructorDescriptor, - constructorFactory: (IrConstructorSymbol) -> IrConstructor = { IrConstructorImpl(startOffset, endOffset, origin, it, IrUninitializedType) } + constructorFactory: (IrConstructorSymbol) -> IrConstructor = { + IrConstructorImpl(startOffset, endOffset, origin, it, IrUninitializedType).apply { + metadata = MetadataSource.Function(it.descriptor) + } + } ): IrConstructor = constructorSymbolTable.declare( descriptor, @@ -286,7 +292,11 @@ open class SymbolTable : ReferenceSymbolTable { origin: IrDeclarationOrigin, descriptor: PropertyDescriptor, type: IrType, - fieldFactory: (IrFieldSymbol) -> IrField = { IrFieldImpl(startOffset, endOffset, origin, it, type) } + fieldFactory: (IrFieldSymbol) -> IrField = { + IrFieldImpl(startOffset, endOffset, origin, it, type).apply { + metadata = MetadataSource.Property(it.descriptor) + } + } ): IrField = fieldSymbolTable.declare( descriptor, @@ -320,7 +330,11 @@ open class SymbolTable : ReferenceSymbolTable { endOffset: Int, origin: IrDeclarationOrigin, descriptor: FunctionDescriptor, - functionFactory: (IrSimpleFunctionSymbol) -> IrSimpleFunction = { IrFunctionImpl(startOffset, endOffset, origin, it, IrUninitializedType) } + functionFactory: (IrSimpleFunctionSymbol) -> IrSimpleFunction = { + IrFunctionImpl(startOffset, endOffset, origin, it, IrUninitializedType).apply { + metadata = MetadataSource.Function(it.descriptor) + } + } ): IrSimpleFunction { return simpleFunctionSymbolTable.declare( descriptor, diff --git a/compiler/testData/codegen/box/annotations/annotatedObjectLiteral.kt b/compiler/testData/codegen/box/annotations/annotatedObjectLiteral.kt index 805f882d640..172cf98b9b6 100644 --- a/compiler/testData/codegen/box/annotations/annotatedObjectLiteral.kt +++ b/compiler/testData/codegen/box/annotations/annotatedObjectLiteral.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_RUNTIME diff --git a/compiler/testData/codegen/box/collectionLiterals/collectionLiteralsWithConstants.kt b/compiler/testData/codegen/box/collectionLiterals/collectionLiteralsWithConstants.kt index 1bf06b73d14..c565aab7244 100644 --- a/compiler/testData/codegen/box/collectionLiterals/collectionLiteralsWithConstants.kt +++ b/compiler/testData/codegen/box/collectionLiterals/collectionLiteralsWithConstants.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // WITH_REFLECT // TARGET_BACKEND: JVM diff --git a/compiler/testData/codegen/box/jvmField/topLevelFieldReflection.kt b/compiler/testData/codegen/box/jvmField/topLevelFieldReflection.kt index f1a5d0a2e00..ec6662cb63c 100644 --- a/compiler/testData/codegen/box/jvmField/topLevelFieldReflection.kt +++ b/compiler/testData/codegen/box/jvmField/topLevelFieldReflection.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/jvmName/annotationProperties.kt b/compiler/testData/codegen/box/jvmName/annotationProperties.kt index fce25a4d2da..8d6f4876b18 100644 --- a/compiler/testData/codegen/box/jvmName/annotationProperties.kt +++ b/compiler/testData/codegen/box/jvmName/annotationProperties.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT package test diff --git a/compiler/testData/codegen/box/reflection/annotations/annotationRetentionAnnotation.kt b/compiler/testData/codegen/box/reflection/annotations/annotationRetentionAnnotation.kt index da934fdde49..a52c43eb697 100644 --- a/compiler/testData/codegen/box/reflection/annotations/annotationRetentionAnnotation.kt +++ b/compiler/testData/codegen/box/reflection/annotations/annotationRetentionAnnotation.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/annotations/onTypes/differentArgumentTypes.kt b/compiler/testData/codegen/box/reflection/annotations/onTypes/differentArgumentTypes.kt index c4dd01eb9df..4e1b22b6061 100644 --- a/compiler/testData/codegen/box/reflection/annotations/onTypes/differentArgumentTypes.kt +++ b/compiler/testData/codegen/box/reflection/annotations/onTypes/differentArgumentTypes.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/annotations/retentions.kt b/compiler/testData/codegen/box/reflection/annotations/retentions.kt index b3c2f35445c..3d9597bd113 100644 --- a/compiler/testData/codegen/box/reflection/annotations/retentions.kt +++ b/compiler/testData/codegen/box/reflection/annotations/retentions.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/annotations/simpleFunAnnotation.kt b/compiler/testData/codegen/box/reflection/annotations/simpleFunAnnotation.kt index 7d9e0893927..9bf7297f9b3 100644 --- a/compiler/testData/codegen/box/reflection/annotations/simpleFunAnnotation.kt +++ b/compiler/testData/codegen/box/reflection/annotations/simpleFunAnnotation.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/annotations/simpleParamAnnotation.kt b/compiler/testData/codegen/box/reflection/annotations/simpleParamAnnotation.kt index 49af2f9360e..6e642f79c54 100644 --- a/compiler/testData/codegen/box/reflection/annotations/simpleParamAnnotation.kt +++ b/compiler/testData/codegen/box/reflection/annotations/simpleParamAnnotation.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/call/bound/extensionFunction.kt b/compiler/testData/codegen/box/reflection/call/bound/extensionFunction.kt index b18ee72af00..993e4820d8d 100644 --- a/compiler/testData/codegen/box/reflection/call/bound/extensionFunction.kt +++ b/compiler/testData/codegen/box/reflection/call/bound/extensionFunction.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/call/protectedMembers.kt b/compiler/testData/codegen/box/reflection/call/protectedMembers.kt index 2ce90787aa7..6cc6f489d92 100644 --- a/compiler/testData/codegen/box/reflection/call/protectedMembers.kt +++ b/compiler/testData/codegen/box/reflection/call/protectedMembers.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/callBy/boundExtensionFunction.kt b/compiler/testData/codegen/box/reflection/callBy/boundExtensionFunction.kt index 430048c1a14..1f00cd8d0c0 100644 --- a/compiler/testData/codegen/box/reflection/callBy/boundExtensionFunction.kt +++ b/compiler/testData/codegen/box/reflection/callBy/boundExtensionFunction.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/callBy/boundJvmStaticInObject.kt b/compiler/testData/codegen/box/reflection/callBy/boundJvmStaticInObject.kt index 57ff15ee6ea..6309c443e5e 100644 --- a/compiler/testData/codegen/box/reflection/callBy/boundJvmStaticInObject.kt +++ b/compiler/testData/codegen/box/reflection/callBy/boundJvmStaticInObject.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/callBy/companionObject.kt b/compiler/testData/codegen/box/reflection/callBy/companionObject.kt index 61ff02269de..746709a800f 100644 --- a/compiler/testData/codegen/box/reflection/callBy/companionObject.kt +++ b/compiler/testData/codegen/box/reflection/callBy/companionObject.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/callBy/jvmStaticInCompanionObject.kt b/compiler/testData/codegen/box/reflection/callBy/jvmStaticInCompanionObject.kt index aab4c36c505..9aade3091ee 100644 --- a/compiler/testData/codegen/box/reflection/callBy/jvmStaticInCompanionObject.kt +++ b/compiler/testData/codegen/box/reflection/callBy/jvmStaticInCompanionObject.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/callBy/jvmStaticInObject.kt b/compiler/testData/codegen/box/reflection/callBy/jvmStaticInObject.kt index 04af9454253..603a1f086c2 100644 --- a/compiler/testData/codegen/box/reflection/callBy/jvmStaticInObject.kt +++ b/compiler/testData/codegen/box/reflection/callBy/jvmStaticInObject.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/callBy/manyArgumentsOnlyOneDefault.kt b/compiler/testData/codegen/box/reflection/callBy/manyArgumentsOnlyOneDefault.kt index 33a252b52b8..f60b4650998 100644 --- a/compiler/testData/codegen/box/reflection/callBy/manyArgumentsOnlyOneDefault.kt +++ b/compiler/testData/codegen/box/reflection/callBy/manyArgumentsOnlyOneDefault.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/callBy/manyMaskArguments.kt b/compiler/testData/codegen/box/reflection/callBy/manyMaskArguments.kt index 50886accbd4..7c2ff687523 100644 --- a/compiler/testData/codegen/box/reflection/callBy/manyMaskArguments.kt +++ b/compiler/testData/codegen/box/reflection/callBy/manyMaskArguments.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/callBy/nonDefaultParameterOmitted.kt b/compiler/testData/codegen/box/reflection/callBy/nonDefaultParameterOmitted.kt index 9f036301883..51a03692991 100644 --- a/compiler/testData/codegen/box/reflection/callBy/nonDefaultParameterOmitted.kt +++ b/compiler/testData/codegen/box/reflection/callBy/nonDefaultParameterOmitted.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/classes/companionObject.kt b/compiler/testData/codegen/box/reflection/classes/companionObject.kt index a03b179b459..d35ca4b9ac3 100644 --- a/compiler/testData/codegen/box/reflection/classes/companionObject.kt +++ b/compiler/testData/codegen/box/reflection/classes/companionObject.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/classes/createInstance.kt b/compiler/testData/codegen/box/reflection/classes/createInstance.kt index 2ffcc4ef228..1948fd22331 100644 --- a/compiler/testData/codegen/box/reflection/classes/createInstance.kt +++ b/compiler/testData/codegen/box/reflection/classes/createInstance.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/classes/declaredMembers.kt b/compiler/testData/codegen/box/reflection/classes/declaredMembers.kt index ed119169d4a..70a22cfb28c 100644 --- a/compiler/testData/codegen/box/reflection/classes/declaredMembers.kt +++ b/compiler/testData/codegen/box/reflection/classes/declaredMembers.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/classes/objectInstance.kt b/compiler/testData/codegen/box/reflection/classes/objectInstance.kt index cfee0acb053..5571440a8fd 100644 --- a/compiler/testData/codegen/box/reflection/classes/objectInstance.kt +++ b/compiler/testData/codegen/box/reflection/classes/objectInstance.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/classes/sealedSubclasses.kt b/compiler/testData/codegen/box/reflection/classes/sealedSubclasses.kt index b520d4f700a..79950206131 100644 --- a/compiler/testData/codegen/box/reflection/classes/sealedSubclasses.kt +++ b/compiler/testData/codegen/box/reflection/classes/sealedSubclasses.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/constructors/classesWithoutConstructors.kt b/compiler/testData/codegen/box/reflection/constructors/classesWithoutConstructors.kt index 4c9a5e84c6d..6e700336a5d 100644 --- a/compiler/testData/codegen/box/reflection/constructors/classesWithoutConstructors.kt +++ b/compiler/testData/codegen/box/reflection/constructors/classesWithoutConstructors.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/constructors/enumEntry.kt b/compiler/testData/codegen/box/reflection/constructors/enumEntry.kt index 00df38fe8b9..6db2ae33063 100644 --- a/compiler/testData/codegen/box/reflection/constructors/enumEntry.kt +++ b/compiler/testData/codegen/box/reflection/constructors/enumEntry.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR, JS, NATIVE // WITH_REFLECT package test diff --git a/compiler/testData/codegen/box/reflection/constructors/primaryConstructor.kt b/compiler/testData/codegen/box/reflection/constructors/primaryConstructor.kt index 59f7bb06c5f..970a2735a12 100644 --- a/compiler/testData/codegen/box/reflection/constructors/primaryConstructor.kt +++ b/compiler/testData/codegen/box/reflection/constructors/primaryConstructor.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/createAnnotation/enumKClassAnnotation.kt b/compiler/testData/codegen/box/reflection/createAnnotation/enumKClassAnnotation.kt index 1670be5533d..efcf12ee6a1 100644 --- a/compiler/testData/codegen/box/reflection/createAnnotation/enumKClassAnnotation.kt +++ b/compiler/testData/codegen/box/reflection/createAnnotation/enumKClassAnnotation.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/createAnnotation/equalsHashCodeToString.kt b/compiler/testData/codegen/box/reflection/createAnnotation/equalsHashCodeToString.kt index 8d69307ad77..465ab646209 100644 --- a/compiler/testData/codegen/box/reflection/createAnnotation/equalsHashCodeToString.kt +++ b/compiler/testData/codegen/box/reflection/createAnnotation/equalsHashCodeToString.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/createAnnotation/floatingPointParameters.kt b/compiler/testData/codegen/box/reflection/createAnnotation/floatingPointParameters.kt index 7c1d61b81b0..c7eb53151c7 100644 --- a/compiler/testData/codegen/box/reflection/createAnnotation/floatingPointParameters.kt +++ b/compiler/testData/codegen/box/reflection/createAnnotation/floatingPointParameters.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/createAnnotation/parameterNamedEquals.kt b/compiler/testData/codegen/box/reflection/createAnnotation/parameterNamedEquals.kt index e1d7db6bb95..c4408c94458 100644 --- a/compiler/testData/codegen/box/reflection/createAnnotation/parameterNamedEquals.kt +++ b/compiler/testData/codegen/box/reflection/createAnnotation/parameterNamedEquals.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/createAnnotation/primitivesAndArrays.kt b/compiler/testData/codegen/box/reflection/createAnnotation/primitivesAndArrays.kt index 9d72da020dc..a7ce7e9266e 100644 --- a/compiler/testData/codegen/box/reflection/createAnnotation/primitivesAndArrays.kt +++ b/compiler/testData/codegen/box/reflection/createAnnotation/primitivesAndArrays.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/functions/declaredVsInheritedFunctions.kt b/compiler/testData/codegen/box/reflection/functions/declaredVsInheritedFunctions.kt index 3aa74129c5d..1c5cd723b1f 100644 --- a/compiler/testData/codegen/box/reflection/functions/declaredVsInheritedFunctions.kt +++ b/compiler/testData/codegen/box/reflection/functions/declaredVsInheritedFunctions.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/functions/genericOverriddenFunction.kt b/compiler/testData/codegen/box/reflection/functions/genericOverriddenFunction.kt index 199814765a8..ad23d520c8b 100644 --- a/compiler/testData/codegen/box/reflection/functions/genericOverriddenFunction.kt +++ b/compiler/testData/codegen/box/reflection/functions/genericOverriddenFunction.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/mapping/fakeOverrides/javaFieldGetterSetter.kt b/compiler/testData/codegen/box/reflection/mapping/fakeOverrides/javaFieldGetterSetter.kt index ae3c3460629..b23c3b6ecf5 100644 --- a/compiler/testData/codegen/box/reflection/mapping/fakeOverrides/javaFieldGetterSetter.kt +++ b/compiler/testData/codegen/box/reflection/mapping/fakeOverrides/javaFieldGetterSetter.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/mapping/jvmStatic/companionObjectFunction.kt b/compiler/testData/codegen/box/reflection/mapping/jvmStatic/companionObjectFunction.kt index 4a0af6c4403..d7e0d3aeccf 100644 --- a/compiler/testData/codegen/box/reflection/mapping/jvmStatic/companionObjectFunction.kt +++ b/compiler/testData/codegen/box/reflection/mapping/jvmStatic/companionObjectFunction.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/mapping/topLevelFunctionOtherFile.kt b/compiler/testData/codegen/box/reflection/mapping/topLevelFunctionOtherFile.kt index 0dd80d6a1d1..d9c37acb38e 100644 --- a/compiler/testData/codegen/box/reflection/mapping/topLevelFunctionOtherFile.kt +++ b/compiler/testData/codegen/box/reflection/mapping/topLevelFunctionOtherFile.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/mapping/types/annotationConstructorParameters.kt b/compiler/testData/codegen/box/reflection/mapping/types/annotationConstructorParameters.kt index 9df32849854..80ef351b5b4 100644 --- a/compiler/testData/codegen/box/reflection/mapping/types/annotationConstructorParameters.kt +++ b/compiler/testData/codegen/box/reflection/mapping/types/annotationConstructorParameters.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/mapping/types/genericArrayElementType.kt b/compiler/testData/codegen/box/reflection/mapping/types/genericArrayElementType.kt index dc5789e8dbb..d8c06d8cfcd 100644 --- a/compiler/testData/codegen/box/reflection/mapping/types/genericArrayElementType.kt +++ b/compiler/testData/codegen/box/reflection/mapping/types/genericArrayElementType.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/mapping/types/innerGenericTypeArgument.kt b/compiler/testData/codegen/box/reflection/mapping/types/innerGenericTypeArgument.kt index 455461c89dd..6277c1abcfe 100644 --- a/compiler/testData/codegen/box/reflection/mapping/types/innerGenericTypeArgument.kt +++ b/compiler/testData/codegen/box/reflection/mapping/types/innerGenericTypeArgument.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/mapping/types/parameterizedTypeArgument.kt b/compiler/testData/codegen/box/reflection/mapping/types/parameterizedTypeArgument.kt index d086bef8284..e4d47a93bbf 100644 --- a/compiler/testData/codegen/box/reflection/mapping/types/parameterizedTypeArgument.kt +++ b/compiler/testData/codegen/box/reflection/mapping/types/parameterizedTypeArgument.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/mapping/types/supertypes.kt b/compiler/testData/codegen/box/reflection/mapping/types/supertypes.kt index fa910609576..8e052a45b9d 100644 --- a/compiler/testData/codegen/box/reflection/mapping/types/supertypes.kt +++ b/compiler/testData/codegen/box/reflection/mapping/types/supertypes.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/mapping/types/withNullability.kt b/compiler/testData/codegen/box/reflection/mapping/types/withNullability.kt index 034dca0e73b..f55c3bf041b 100644 --- a/compiler/testData/codegen/box/reflection/mapping/types/withNullability.kt +++ b/compiler/testData/codegen/box/reflection/mapping/types/withNullability.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/methodsFromAny/fakeOverrideToString.kt b/compiler/testData/codegen/box/reflection/methodsFromAny/fakeOverrideToString.kt index a1c8a5bc78a..200837cf811 100644 --- a/compiler/testData/codegen/box/reflection/methodsFromAny/fakeOverrideToString.kt +++ b/compiler/testData/codegen/box/reflection/methodsFromAny/fakeOverrideToString.kt @@ -1,4 +1,4 @@ -// IGNORE_BACKEND: JVM_IR, JS_IR, JS, NATIVE +// IGNORE_BACKEND: JS_IR, JS, NATIVE // WITH_REFLECT package test diff --git a/compiler/testData/codegen/box/reflection/methodsFromAny/functionToString.kt b/compiler/testData/codegen/box/reflection/methodsFromAny/functionToString.kt index 5dbe9d814e1..a817ef22cca 100644 --- a/compiler/testData/codegen/box/reflection/methodsFromAny/functionToString.kt +++ b/compiler/testData/codegen/box/reflection/methodsFromAny/functionToString.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/methodsFromAny/memberExtensionToString.kt b/compiler/testData/codegen/box/reflection/methodsFromAny/memberExtensionToString.kt index d7a3ddda788..5ba0a75207e 100644 --- a/compiler/testData/codegen/box/reflection/methodsFromAny/memberExtensionToString.kt +++ b/compiler/testData/codegen/box/reflection/methodsFromAny/memberExtensionToString.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/methodsFromAny/typeEqualsHashCode.kt b/compiler/testData/codegen/box/reflection/methodsFromAny/typeEqualsHashCode.kt index 5271afdd89a..8ee3fc10e14 100644 --- a/compiler/testData/codegen/box/reflection/methodsFromAny/typeEqualsHashCode.kt +++ b/compiler/testData/codegen/box/reflection/methodsFromAny/typeEqualsHashCode.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/methodsFromAny/typeParametersToString.kt b/compiler/testData/codegen/box/reflection/methodsFromAny/typeParametersToString.kt index 58a6cae6b91..38e19316f5a 100644 --- a/compiler/testData/codegen/box/reflection/methodsFromAny/typeParametersToString.kt +++ b/compiler/testData/codegen/box/reflection/methodsFromAny/typeParametersToString.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/methodsFromAny/typeToStringInnerGeneric.kt b/compiler/testData/codegen/box/reflection/methodsFromAny/typeToStringInnerGeneric.kt index 53730537621..04dcb2a4eb2 100644 --- a/compiler/testData/codegen/box/reflection/methodsFromAny/typeToStringInnerGeneric.kt +++ b/compiler/testData/codegen/box/reflection/methodsFromAny/typeToStringInnerGeneric.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/modifiers/classModality.kt b/compiler/testData/codegen/box/reflection/modifiers/classModality.kt index 7a988ab8f1c..1a0296ded28 100644 --- a/compiler/testData/codegen/box/reflection/modifiers/classModality.kt +++ b/compiler/testData/codegen/box/reflection/modifiers/classModality.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/modifiers/classVisibility.kt b/compiler/testData/codegen/box/reflection/modifiers/classVisibility.kt index 7e62b33b63d..ecfaee7b75d 100644 --- a/compiler/testData/codegen/box/reflection/modifiers/classVisibility.kt +++ b/compiler/testData/codegen/box/reflection/modifiers/classVisibility.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/modifiers/classes.kt b/compiler/testData/codegen/box/reflection/modifiers/classes.kt index 86c87fcb63a..31e798ed5b1 100644 --- a/compiler/testData/codegen/box/reflection/modifiers/classes.kt +++ b/compiler/testData/codegen/box/reflection/modifiers/classes.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/modifiers/typeParameters.kt b/compiler/testData/codegen/box/reflection/modifiers/typeParameters.kt index 69fb3da8868..cb8b6a17210 100644 --- a/compiler/testData/codegen/box/reflection/modifiers/typeParameters.kt +++ b/compiler/testData/codegen/box/reflection/modifiers/typeParameters.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/parameters/boundInnerClassConstructor.kt b/compiler/testData/codegen/box/reflection/parameters/boundInnerClassConstructor.kt index 613de5fdd44..af473c291ba 100644 --- a/compiler/testData/codegen/box/reflection/parameters/boundInnerClassConstructor.kt +++ b/compiler/testData/codegen/box/reflection/parameters/boundInnerClassConstructor.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/parameters/boundObjectMemberReferences.kt b/compiler/testData/codegen/box/reflection/parameters/boundObjectMemberReferences.kt index 5f0526858c4..f82d78a51cd 100644 --- a/compiler/testData/codegen/box/reflection/parameters/boundObjectMemberReferences.kt +++ b/compiler/testData/codegen/box/reflection/parameters/boundObjectMemberReferences.kt @@ -1,5 +1,4 @@ // TODO: investigate should it be ran for JS or not -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/parameters/findParameterByName.kt b/compiler/testData/codegen/box/reflection/parameters/findParameterByName.kt index 02ef4b41ce0..855595efa7a 100644 --- a/compiler/testData/codegen/box/reflection/parameters/findParameterByName.kt +++ b/compiler/testData/codegen/box/reflection/parameters/findParameterByName.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/properties/accessors/memberExtensions.kt b/compiler/testData/codegen/box/reflection/properties/accessors/memberExtensions.kt index ef52d4509a5..888c8802c7f 100644 --- a/compiler/testData/codegen/box/reflection/properties/accessors/memberExtensions.kt +++ b/compiler/testData/codegen/box/reflection/properties/accessors/memberExtensions.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/properties/allVsDeclared.kt b/compiler/testData/codegen/box/reflection/properties/allVsDeclared.kt index 73da1f3ac28..fdf521eab76 100644 --- a/compiler/testData/codegen/box/reflection/properties/allVsDeclared.kt +++ b/compiler/testData/codegen/box/reflection/properties/allVsDeclared.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/properties/declaredVsInheritedProperties.kt b/compiler/testData/codegen/box/reflection/properties/declaredVsInheritedProperties.kt index 9fd89b35b03..6409aaee666 100644 --- a/compiler/testData/codegen/box/reflection/properties/declaredVsInheritedProperties.kt +++ b/compiler/testData/codegen/box/reflection/properties/declaredVsInheritedProperties.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/properties/getExtensionPropertiesMutableVsReadonly.kt b/compiler/testData/codegen/box/reflection/properties/getExtensionPropertiesMutableVsReadonly.kt index e223b37b810..24344043b3e 100644 --- a/compiler/testData/codegen/box/reflection/properties/getExtensionPropertiesMutableVsReadonly.kt +++ b/compiler/testData/codegen/box/reflection/properties/getExtensionPropertiesMutableVsReadonly.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/properties/memberAndMemberExtensionWithSameName.kt b/compiler/testData/codegen/box/reflection/properties/memberAndMemberExtensionWithSameName.kt index 9378a7f8320..7a8ad1ff851 100644 --- a/compiler/testData/codegen/box/reflection/properties/memberAndMemberExtensionWithSameName.kt +++ b/compiler/testData/codegen/box/reflection/properties/memberAndMemberExtensionWithSameName.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/properties/privateToThisAccessors.kt b/compiler/testData/codegen/box/reflection/properties/privateToThisAccessors.kt index 2a678bc8553..21eb7df89a3 100644 --- a/compiler/testData/codegen/box/reflection/properties/privateToThisAccessors.kt +++ b/compiler/testData/codegen/box/reflection/properties/privateToThisAccessors.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/properties/simpleGetProperties.kt b/compiler/testData/codegen/box/reflection/properties/simpleGetProperties.kt index f515a4951b1..c9058988996 100644 --- a/compiler/testData/codegen/box/reflection/properties/simpleGetProperties.kt +++ b/compiler/testData/codegen/box/reflection/properties/simpleGetProperties.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/supertypes/builtInClassSupertypes.kt b/compiler/testData/codegen/box/reflection/supertypes/builtInClassSupertypes.kt index 871644c1f69..51c7a202d6a 100644 --- a/compiler/testData/codegen/box/reflection/supertypes/builtInClassSupertypes.kt +++ b/compiler/testData/codegen/box/reflection/supertypes/builtInClassSupertypes.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/supertypes/simpleSupertypes.kt b/compiler/testData/codegen/box/reflection/supertypes/simpleSupertypes.kt index bb7ac8bf0e7..785c7a4f62c 100644 --- a/compiler/testData/codegen/box/reflection/supertypes/simpleSupertypes.kt +++ b/compiler/testData/codegen/box/reflection/supertypes/simpleSupertypes.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/typeParameters/declarationSiteVariance.kt b/compiler/testData/codegen/box/reflection/typeParameters/declarationSiteVariance.kt index 9726d266e3b..494522c21aa 100644 --- a/compiler/testData/codegen/box/reflection/typeParameters/declarationSiteVariance.kt +++ b/compiler/testData/codegen/box/reflection/typeParameters/declarationSiteVariance.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/typeParameters/typeParametersAndNames.kt b/compiler/testData/codegen/box/reflection/typeParameters/typeParametersAndNames.kt index 992848faa10..f08da123cc0 100644 --- a/compiler/testData/codegen/box/reflection/typeParameters/typeParametersAndNames.kt +++ b/compiler/testData/codegen/box/reflection/typeParameters/typeParametersAndNames.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/typeParameters/upperBounds.kt b/compiler/testData/codegen/box/reflection/typeParameters/upperBounds.kt index 68413d3a6b2..2fdc4cea305 100644 --- a/compiler/testData/codegen/box/reflection/typeParameters/upperBounds.kt +++ b/compiler/testData/codegen/box/reflection/typeParameters/upperBounds.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/types/classifierIsClass.kt b/compiler/testData/codegen/box/reflection/types/classifierIsClass.kt index 1d0b234c434..d7e5396cbd9 100644 --- a/compiler/testData/codegen/box/reflection/types/classifierIsClass.kt +++ b/compiler/testData/codegen/box/reflection/types/classifierIsClass.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/types/classifierIsTypeParameter.kt b/compiler/testData/codegen/box/reflection/types/classifierIsTypeParameter.kt index a769155f3a2..c996a57bebb 100644 --- a/compiler/testData/codegen/box/reflection/types/classifierIsTypeParameter.kt +++ b/compiler/testData/codegen/box/reflection/types/classifierIsTypeParameter.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/types/classifiersOfBuiltInTypes.kt b/compiler/testData/codegen/box/reflection/types/classifiersOfBuiltInTypes.kt index e899f3526ce..cb7a4b70b99 100644 --- a/compiler/testData/codegen/box/reflection/types/classifiersOfBuiltInTypes.kt +++ b/compiler/testData/codegen/box/reflection/types/classifiersOfBuiltInTypes.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/types/createType/typeParameter.kt b/compiler/testData/codegen/box/reflection/types/createType/typeParameter.kt index dc29156dcd7..02f5002a603 100644 --- a/compiler/testData/codegen/box/reflection/types/createType/typeParameter.kt +++ b/compiler/testData/codegen/box/reflection/types/createType/typeParameter.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/types/innerGenericArguments.kt b/compiler/testData/codegen/box/reflection/types/innerGenericArguments.kt index 55f39b61311..4ba5a9d8c80 100644 --- a/compiler/testData/codegen/box/reflection/types/innerGenericArguments.kt +++ b/compiler/testData/codegen/box/reflection/types/innerGenericArguments.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/types/jvmErasureOfClass.kt b/compiler/testData/codegen/box/reflection/types/jvmErasureOfClass.kt index 01c927eabbc..bea77ac9c0f 100644 --- a/compiler/testData/codegen/box/reflection/types/jvmErasureOfClass.kt +++ b/compiler/testData/codegen/box/reflection/types/jvmErasureOfClass.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/types/platformTypeNotEqualToKotlinType.kt b/compiler/testData/codegen/box/reflection/types/platformTypeNotEqualToKotlinType.kt index da00d3c6cdd..d4a033b063f 100644 --- a/compiler/testData/codegen/box/reflection/types/platformTypeNotEqualToKotlinType.kt +++ b/compiler/testData/codegen/box/reflection/types/platformTypeNotEqualToKotlinType.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/types/subtyping/platformType.kt b/compiler/testData/codegen/box/reflection/types/subtyping/platformType.kt index e14f13a955e..f9932a50a7d 100644 --- a/compiler/testData/codegen/box/reflection/types/subtyping/platformType.kt +++ b/compiler/testData/codegen/box/reflection/types/subtyping/platformType.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/types/subtyping/simpleGenericTypes.kt b/compiler/testData/codegen/box/reflection/types/subtyping/simpleGenericTypes.kt index 019e398f7b7..56898204b25 100644 --- a/compiler/testData/codegen/box/reflection/types/subtyping/simpleGenericTypes.kt +++ b/compiler/testData/codegen/box/reflection/types/subtyping/simpleGenericTypes.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/types/subtyping/simpleSubtypeSupertype.kt b/compiler/testData/codegen/box/reflection/types/subtyping/simpleSubtypeSupertype.kt index ea9e6b20e48..ce82270a60e 100644 --- a/compiler/testData/codegen/box/reflection/types/subtyping/simpleSubtypeSupertype.kt +++ b/compiler/testData/codegen/box/reflection/types/subtyping/simpleSubtypeSupertype.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/types/subtyping/typeProjection.kt b/compiler/testData/codegen/box/reflection/types/subtyping/typeProjection.kt index f31f9bd4cdf..29863590942 100644 --- a/compiler/testData/codegen/box/reflection/types/subtyping/typeProjection.kt +++ b/compiler/testData/codegen/box/reflection/types/subtyping/typeProjection.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/types/useSiteVariance.kt b/compiler/testData/codegen/box/reflection/types/useSiteVariance.kt index b4364479cd7..d6b0fc3fc1f 100644 --- a/compiler/testData/codegen/box/reflection/types/useSiteVariance.kt +++ b/compiler/testData/codegen/box/reflection/types/useSiteVariance.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JS_IR // TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE diff --git a/compiler/testData/codegen/box/reflection/types/withNullability.kt b/compiler/testData/codegen/box/reflection/types/withNullability.kt index 6a7d4861f75..f1f2aae2ad7 100644 --- a/compiler/testData/codegen/box/reflection/types/withNullability.kt +++ b/compiler/testData/codegen/box/reflection/types/withNullability.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/vararg/assigningArrayToVarargInAnnotation.kt b/compiler/testData/codegen/box/vararg/assigningArrayToVarargInAnnotation.kt index 03f3fd345f9..d8519bbb06a 100644 --- a/compiler/testData/codegen/box/vararg/assigningArrayToVarargInAnnotation.kt +++ b/compiler/testData/codegen/box/vararg/assigningArrayToVarargInAnnotation.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // WITH_REFLECT // TARGET_BACKEND: JVM diff --git a/compiler/testData/codegen/boxAgainstJava/multiplatform/annotationsViaActualTypeAliasFromBinary.kt b/compiler/testData/codegen/boxAgainstJava/multiplatform/annotationsViaActualTypeAliasFromBinary.kt index 2be68b72930..635fb7d069a 100644 --- a/compiler/testData/codegen/boxAgainstJava/multiplatform/annotationsViaActualTypeAliasFromBinary.kt +++ b/compiler/testData/codegen/boxAgainstJava/multiplatform/annotationsViaActualTypeAliasFromBinary.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // !LANGUAGE: +MultiPlatformProjects // WITH_REFLECT // FILE: main.kt diff --git a/compiler/testData/codegen/bytecodeText/mangling/parentheses.kt b/compiler/testData/codegen/bytecodeText/mangling/parentheses.kt index 5a22d0c0de6..eb55d11b41d 100644 --- a/compiler/testData/codegen/bytecodeText/mangling/parentheses.kt +++ b/compiler/testData/codegen/bytecodeText/mangling/parentheses.kt @@ -1,5 +1,4 @@ // !SANITIZE_PARENTHESES -// IGNORE_BACKEND: JVM_IR class `(X)` { fun `(Y)`(): String { diff --git a/compiler/testData/codegen/bytecodeText/mangling/parenthesesNoSanitize.kt b/compiler/testData/codegen/bytecodeText/mangling/parenthesesNoSanitize.kt index 822e25df3df..7e164d29c2f 100644 --- a/compiler/testData/codegen/bytecodeText/mangling/parenthesesNoSanitize.kt +++ b/compiler/testData/codegen/bytecodeText/mangling/parenthesesNoSanitize.kt @@ -1,5 +1,3 @@ -// IGNORE_BACKEND: JVM_IR - class `(X)` { fun `(Y)`() {} }