From 163a052f98781096208a0f8fc8ba77c799b7986e Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Mon, 6 Mar 2023 16:26:46 +0100 Subject: [PATCH] Remove old JVM backend implementation of Parcelize There's no way for the end user to use this implementation anymore, since old JVM backend cannot be enabled, and nothing else from Kotlin depends on it. --- .../kotlin/generators/tests/GenerateTests.kt | 16 +- .../parcelize/{ir => }/AndroidIrBuilder.kt | 3 +- .../parcelize/{ir => }/AndroidSymbols.kt | 3 +- .../{ir => }/IrParcelSerializerFactory.kt | 2 +- .../parcelize/{ir => }/IrParcelSerializers.kt | 2 +- .../parcelize/{ir => }/IrParcelerScope.kt | 2 +- ...eClinitClassBuilderInterceptorExtension.kt | 144 ----- .../parcelize/ParcelizeCodegenExtension.kt | 426 --------------- .../ParcelizeFirIrGeneratorExtension.kt | 2 - .../{ir => }/ParcelizeFirIrTransformer.kt | 3 +- .../ParcelizeIrGeneratorExtension.kt | 3 - .../{ir => }/ParcelizeIrTransformer.kt | 3 +- .../{ir => }/ParcelizeIrTransformerBase.kt | 2 +- .../kotlin/parcelize/{ir => }/irUtils.kt | 2 +- .../parcelize/ParcelizeComponentRegistrar.kt | 4 - .../parcelize/ParcelizeResolveExtension.kt | 10 +- .../runners/ParcelizeBoxTestGenerated.java | 507 ------------------ ...ParcelizeBytecodeListingTestGenerated.java | 159 ------ .../test/runners/AbstractParcelizeBoxTest.kt | 14 - .../AbstractParcelizeBytecodeListingTest.kt | 8 - ...izeBoxTestWithSerializableLikeExtension.kt | 27 - 21 files changed, 18 insertions(+), 1324 deletions(-) rename plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/{ir => }/AndroidIrBuilder.kt (98%) rename plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/{ir => }/AndroidSymbols.kt (99%) rename plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/{ir => }/IrParcelSerializerFactory.kt (99%) rename plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/{ir => }/IrParcelSerializers.kt (99%) rename plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/{ir => }/IrParcelerScope.kt (98%) delete mode 100644 plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ParcelizeClinitClassBuilderInterceptorExtension.kt delete mode 100644 plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ParcelizeCodegenExtension.kt rename plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/{ir => }/ParcelizeFirIrTransformer.kt (97%) rename plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/{ir => }/ParcelizeIrTransformer.kt (98%) rename plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/{ir => }/ParcelizeIrTransformerBase.kt (99%) rename plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/{ir => }/irUtils.kt (99%) delete mode 100644 plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeBoxTestGenerated.java delete mode 100644 plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeBytecodeListingTestGenerated.java delete mode 100644 plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeBoxTestWithSerializableLikeExtension.kt diff --git a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt index 141bfe1ebbf..364b75b0d15 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt +++ b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt @@ -14,19 +14,21 @@ import org.jetbrains.kotlin.android.synthetic.test.AbstractAndroidBoxTest import org.jetbrains.kotlin.android.synthetic.test.AbstractAndroidBytecodeShapeTest import org.jetbrains.kotlin.android.synthetic.test.AbstractAndroidIrBoxTest import org.jetbrains.kotlin.android.synthetic.test.AbstractAndroidSyntheticPropertyDescriptorTest -import org.jetbrains.kotlin.assignment.plugin.AbstractIrBlackBoxCodegenTestAssignmentPlugin import org.jetbrains.kotlin.assignment.plugin.AbstractAssignmentPluginDiagnosticTest import org.jetbrains.kotlin.assignment.plugin.AbstractFirLightTreeBlackBoxCodegenTestForAssignmentPlugin import org.jetbrains.kotlin.assignment.plugin.AbstractFirPsiAssignmentPluginDiagnosticTest +import org.jetbrains.kotlin.assignment.plugin.AbstractIrBlackBoxCodegenTestAssignmentPlugin import org.jetbrains.kotlin.fir.plugin.runners.AbstractFirLightTreePluginBlackBoxCodegenTest import org.jetbrains.kotlin.fir.plugin.runners.AbstractFirPsiPluginDiagnosticTest import org.jetbrains.kotlin.generators.generateTestGroupSuiteWithJUnit5 import org.jetbrains.kotlin.generators.impl.generateTestGroupSuite import org.jetbrains.kotlin.generators.model.annotation -import org.jetbrains.kotlin.generators.tests.IncrementalTestsGeneratorUtil.Companion.IcTestTypes.* +import org.jetbrains.kotlin.generators.tests.IncrementalTestsGeneratorUtil.Companion.IcTestTypes.PURE_KOTLIN import org.jetbrains.kotlin.generators.tests.IncrementalTestsGeneratorUtil.Companion.incrementalJvmTestData import org.jetbrains.kotlin.incremental.* -import org.jetbrains.kotlin.jvm.abi.* +import org.jetbrains.kotlin.jvm.abi.AbstractCompareJvmAbiTest +import org.jetbrains.kotlin.jvm.abi.AbstractCompileAgainstJvmAbiTest +import org.jetbrains.kotlin.jvm.abi.AbstractJvmAbiContentTest import org.jetbrains.kotlin.kapt.cli.test.AbstractArgumentParsingTest import org.jetbrains.kotlin.kapt.cli.test.AbstractKaptToolIntegrationTest import org.jetbrains.kotlin.kapt3.test.runners.AbstractClassFileToSourceStubConverterTest @@ -200,10 +202,6 @@ fun main(args: Array) { val excludedFirTestdataPattern = "^(.+)\\.fir\\.kts?\$" testGroup("plugins/parcelize/parcelize-compiler/tests-gen", "plugins/parcelize/parcelize-compiler/testData") { - testClass { - model("box") - } - testClass { model("box") } @@ -212,10 +210,6 @@ fun main(args: Array) { model("box") } - testClass { - model("codegen") - } - testClass { model("codegen") } diff --git a/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ir/AndroidIrBuilder.kt b/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/AndroidIrBuilder.kt similarity index 98% rename from plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ir/AndroidIrBuilder.kt rename to plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/AndroidIrBuilder.kt index 3c92ad5bf7b..8a288c8cbfc 100644 --- a/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ir/AndroidIrBuilder.kt +++ b/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/AndroidIrBuilder.kt @@ -2,7 +2,8 @@ * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.parcelize.ir + +package org.jetbrains.kotlin.parcelize import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET import org.jetbrains.kotlin.ir.builders.* diff --git a/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ir/AndroidSymbols.kt b/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/AndroidSymbols.kt similarity index 99% rename from plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ir/AndroidSymbols.kt rename to plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/AndroidSymbols.kt index 7799e6e96d7..d2a03cdbec8 100644 --- a/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ir/AndroidSymbols.kt +++ b/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/AndroidSymbols.kt @@ -2,7 +2,8 @@ * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.parcelize.ir + +package org.jetbrains.kotlin.parcelize import org.jetbrains.kotlin.backend.common.ir.addExtensionReceiver import org.jetbrains.kotlin.descriptors.ClassKind diff --git a/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ir/IrParcelSerializerFactory.kt b/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/IrParcelSerializerFactory.kt similarity index 99% rename from plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ir/IrParcelSerializerFactory.kt rename to plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/IrParcelSerializerFactory.kt index 04cebff0625..1035a7bc3c3 100644 --- a/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ir/IrParcelSerializerFactory.kt +++ b/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/IrParcelSerializerFactory.kt @@ -3,7 +3,7 @@ * 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.parcelize.ir +package org.jetbrains.kotlin.parcelize import org.jetbrains.kotlin.backend.jvm.ir.erasedUpperBound import org.jetbrains.kotlin.backend.jvm.ir.psiElement diff --git a/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ir/IrParcelSerializers.kt b/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/IrParcelSerializers.kt similarity index 99% rename from plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ir/IrParcelSerializers.kt rename to plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/IrParcelSerializers.kt index ef4498a37e2..8a51199e870 100644 --- a/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ir/IrParcelSerializers.kt +++ b/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/IrParcelSerializers.kt @@ -3,7 +3,7 @@ * 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.parcelize.ir +package org.jetbrains.kotlin.parcelize import org.jetbrains.kotlin.backend.jvm.ir.erasedUpperBound import org.jetbrains.kotlin.backend.jvm.ir.isJvmInterface diff --git a/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ir/IrParcelerScope.kt b/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/IrParcelerScope.kt similarity index 98% rename from plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ir/IrParcelerScope.kt rename to plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/IrParcelerScope.kt index cda6cefcb32..a2a71908611 100644 --- a/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ir/IrParcelerScope.kt +++ b/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/IrParcelerScope.kt @@ -3,7 +3,7 @@ * 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.parcelize.ir +package org.jetbrains.kotlin.parcelize import org.jetbrains.kotlin.ir.declarations.IrAnnotationContainer import org.jetbrains.kotlin.ir.declarations.IrClass diff --git a/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ParcelizeClinitClassBuilderInterceptorExtension.kt b/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ParcelizeClinitClassBuilderInterceptorExtension.kt deleted file mode 100644 index 73dc48611a1..00000000000 --- a/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ParcelizeClinitClassBuilderInterceptorExtension.kt +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.parcelize - -import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.codegen.AbstractClassBuilder -import org.jetbrains.kotlin.codegen.ClassBuilder -import org.jetbrains.kotlin.codegen.ClassBuilderFactory -import org.jetbrains.kotlin.codegen.DelegatingClassBuilder -import org.jetbrains.kotlin.codegen.extensions.ClassBuilderInterceptorExtension -import org.jetbrains.kotlin.diagnostics.DiagnosticSink -import org.jetbrains.kotlin.psi.KtClassOrObject -import org.jetbrains.kotlin.resolve.BindingContext -import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOrigin -import org.jetbrains.org.objectweb.asm.MethodVisitor -import org.jetbrains.org.objectweb.asm.Opcodes -import org.jetbrains.org.objectweb.asm.RecordComponentVisitor -import org.jetbrains.org.objectweb.asm.Type -import org.jetbrains.org.objectweb.asm.commons.InstructionAdapter - -class ParcelizeClinitClassBuilderInterceptorExtension : ClassBuilderInterceptorExtension { - override fun interceptClassBuilderFactory( - interceptedFactory: ClassBuilderFactory, - bindingContext: BindingContext, - diagnostics: DiagnosticSink - ): ClassBuilderFactory { - return ParcelableClinitClassBuilderFactory(interceptedFactory, bindingContext) - } - - private inner class ParcelableClinitClassBuilderFactory( - private val delegateFactory: ClassBuilderFactory, - val bindingContext: BindingContext - ) : ClassBuilderFactory { - - override fun newClassBuilder(origin: JvmDeclarationOrigin): ClassBuilder { - return AndroidOnDestroyCollectorClassBuilder(origin, delegateFactory.newClassBuilder(origin), bindingContext) - } - - override fun getClassBuilderMode() = delegateFactory.classBuilderMode - - override fun asText(builder: ClassBuilder?): String? { - return delegateFactory.asText((builder as AndroidOnDestroyCollectorClassBuilder).delegateClassBuilder) - } - - override fun asBytes(builder: ClassBuilder?): ByteArray? { - return delegateFactory.asBytes((builder as AndroidOnDestroyCollectorClassBuilder).delegateClassBuilder) - } - - override fun close() { - delegateFactory.close() - } - } - - private class AndroidOnDestroyCollectorClassBuilder( - val declarationOrigin: JvmDeclarationOrigin, - val delegateClassBuilder: ClassBuilder, - val bindingContext: BindingContext - ) : DelegatingClassBuilder() { - private var currentClass: KtClassOrObject? = null - private var currentClassName: String? = null - private var isClinitGenerated = false - - override fun getDelegate() = delegateClassBuilder - - override fun defineClass( - origin: PsiElement?, - version: Int, - access: Int, - name: String, - signature: String?, - superName: String, - interfaces: Array - ) { - currentClass = origin as? KtClassOrObject - currentClassName = name - isClinitGenerated = false - - super.defineClass(origin, version, access, name, signature, superName, interfaces) - } - - override fun done(generateSmapCopyToAnnotation: Boolean) { - if (!isClinitGenerated && currentClass != null && currentClassName != null) { - val descriptor = bindingContext[BindingContext.CLASS, currentClass] - if (descriptor != null && declarationOrigin.descriptor == descriptor && descriptor.isParcelize) { - val baseVisitor = super.newMethod(JvmDeclarationOrigin.NO_ORIGIN, Opcodes.ACC_STATIC, "", "()V", null, null) - val visitor = ClinitAwareMethodVisitor(currentClassName!!, baseVisitor) - - visitor.visitCode() - visitor.visitInsn(Opcodes.RETURN) - visitor.visitEnd() - } - } - - super.done(generateSmapCopyToAnnotation) - } - - override fun newMethod( - origin: JvmDeclarationOrigin, - access: Int, - name: String, - desc: String, - signature: String?, - exceptions: Array? - ): MethodVisitor { - if (name == "" && currentClass != null && currentClassName != null) { - isClinitGenerated = true - - val descriptor = bindingContext[BindingContext.CLASS, currentClass] - if (descriptor != null && declarationOrigin.descriptor == descriptor && descriptor.isParcelize) { - return ClinitAwareMethodVisitor( - currentClassName!!, - super.newMethod(origin, access, name, desc, signature, exceptions) - ) - } - } - - return super.newMethod(origin, access, name, desc, signature, exceptions) - } - - override fun newRecordComponent(name: String, desc: String, signature: String?): RecordComponentVisitor { - return AbstractClassBuilder.EMPTY_RECORD_VISITOR - } - } - - private class ClinitAwareMethodVisitor(val parcelableName: String, mv: MethodVisitor) : MethodVisitor(Opcodes.API_VERSION, mv) { - override fun visitInsn(opcode: Int) { - if (opcode == Opcodes.RETURN) { - val iv = InstructionAdapter(this) - val creatorName = "$parcelableName\$Creator" - val creatorType = Type.getObjectType(creatorName) - - iv.anew(creatorType) - iv.dup() - iv.invokespecial(creatorName, "", "()V", false) - iv.putstatic(parcelableName, "CREATOR", "Landroid/os/Parcelable\$Creator;") - } - - super.visitInsn(opcode) - } - } -} diff --git a/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ParcelizeCodegenExtension.kt b/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ParcelizeCodegenExtension.kt deleted file mode 100644 index cbd653ae49e..00000000000 --- a/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ParcelizeCodegenExtension.kt +++ /dev/null @@ -1,426 +0,0 @@ -/* - * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.parcelize - -import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.builtins.KotlinBuiltIns -import org.jetbrains.kotlin.codegen.* -import org.jetbrains.kotlin.codegen.FunctionGenerationStrategy.CodegenBased -import org.jetbrains.kotlin.codegen.context.ClassContext -import org.jetbrains.kotlin.codegen.extensions.ExpressionCodegenExtension -import org.jetbrains.kotlin.descriptors.* -import org.jetbrains.kotlin.descriptors.impl.ClassDescriptorImpl -import org.jetbrains.kotlin.incremental.components.NoLookupLocation -import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.parcelize.ParcelizeNames.NEW_ARRAY_NAME -import org.jetbrains.kotlin.parcelize.ParcelizeResolveExtension.Companion.createMethod -import org.jetbrains.kotlin.parcelize.ParcelizeSyntheticComponent.ComponentKind.* -import org.jetbrains.kotlin.parcelize.serializers.* -import org.jetbrains.kotlin.parcelize.serializers.ParcelizeExtensionBase.Companion.FILE_DESCRIPTOR_FQNAME -import org.jetbrains.kotlin.resolve.BindingContext -import org.jetbrains.kotlin.resolve.DescriptorFactory -import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns -import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe -import org.jetbrains.kotlin.resolve.descriptorUtil.module -import org.jetbrains.kotlin.resolve.inline.InlineUtil -import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOrigin -import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOriginKind -import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodSignature -import org.jetbrains.kotlin.resolve.scopes.MemberScope -import org.jetbrains.kotlin.storage.LockBasedStorageManager -import org.jetbrains.kotlin.types.KotlinType -import org.jetbrains.kotlin.types.TypeUtils -import org.jetbrains.kotlin.types.Variance -import org.jetbrains.kotlin.types.typeUtil.replaceArgumentsWithStarProjections -import org.jetbrains.org.objectweb.asm.Opcodes.* -import org.jetbrains.org.objectweb.asm.Type - -open class ParcelizeCodegenExtension : ParcelizeExtensionBase, ExpressionCodegenExtension { - open fun isAvailable(element: PsiElement): Boolean { - return true - } - - override val shouldGenerateClassSyntheticPartsInLightClassesMode: Boolean - get() = true - - override fun generateClassSyntheticParts(codegen: ImplementationBodyCodegen) { - val declaration = codegen.myClass as? PsiElement ?: return - if (!isAvailable(declaration)) { - return - } - - val parcelableClass = codegen.descriptor - if (!parcelableClass.isParcelizeClassDescriptor) { - return - } - - val propertiesToSerialize = getPropertiesToSerialize(codegen, parcelableClass) - - val parcelerObject = parcelableClass.companionObjectDescriptor?.takeIf { - TypeUtils.getAllSupertypes(it.defaultType).any { supertype -> supertype.isParceler } - } - - with(parcelableClass) { - if (hasSyntheticDescribeContents()) { - writeDescribeContentsFunction(codegen, propertiesToSerialize) - } - - if (hasSyntheticWriteToParcel()) { - writeWriteToParcel(codegen, propertiesToSerialize, PARCEL_TYPE, parcelerObject) - } - - if (!hasCreatorField()) { - writeCreatorAccessField(codegen, parcelableClass) - } - } - - if (codegen.state.classBuilderMode != ClassBuilderMode.LIGHT_CLASSES) { - val parcelClassType = ParcelizeResolveExtension.resolveParcelClassType(parcelableClass.module) - ?: error("Can't resolve 'android.os.Parcel' class") - - val parcelableCreatorClassType = ParcelizeResolveExtension.resolveParcelableCreatorClassType(parcelableClass.module) - ?: error("Can't resolve 'android.os.Parcelable.Creator' class") - - writeCreatorClass( - codegen, - parcelableClass, parcelClassType, parcelableCreatorClassType, - PARCEL_TYPE, parcelerObject, propertiesToSerialize - ) - } - } - - private fun getCompanionClassType(containerAsmType: Type, parcelerObject: ClassDescriptor): Pair { - val shortName = parcelerObject.name - return Pair(Type.getObjectType(containerAsmType.internalName + "\$$shortName"), shortName.asString()) - } - - private fun ClassDescriptor.writeWriteToParcel( - codegen: ImplementationBodyCodegen, - properties: List, - parcelAsmType: Type, - parcelerObject: ClassDescriptor? - ): Unit? { - val containerAsmType = codegen.typeMapper.mapType(this.defaultType) - - return findFunction(WRITE_TO_PARCEL)?.write(codegen) { - if (parcelerObject != null) { - val (companionAsmType, companionFieldName) = getCompanionClassType(containerAsmType, parcelerObject) - - v.getstatic(containerAsmType.internalName, companionFieldName, companionAsmType.descriptor) - v.load(0, containerAsmType) - v.load(1, PARCEL_TYPE) - v.load(2, Type.INT_TYPE) - v.invokevirtual( - companionAsmType.internalName, "write", - "(${containerAsmType.descriptor}${PARCEL_TYPE.descriptor}I)V", false - ) - } else { - val frameMap = FrameMap().apply { - enterTemp(containerAsmType) - enterTemp(PARCEL_TYPE) - enterTemp(Type.INT_TYPE) - } - - val globalContext = ParcelSerializer.ParcelSerializerContext(codegen.typeMapper, containerAsmType, emptyList(), frameMap) - - if (properties.isEmpty()) { - val entityType = this@writeWriteToParcel.defaultType - val asmType = codegen.state.typeMapper.mapType(entityType) - val serializer = if (this@writeWriteToParcel.kind == ClassKind.CLASS) { - NullAwareParcelSerializerWrapper(ZeroParameterClassSerializer(asmType, entityType)) - } else { - ParcelSerializer.get(entityType, asmType, globalContext, strict = true) - } - - v.load(1, parcelAsmType) - v.load(0, containerAsmType) - serializer.writeValue(v) - } else { - for ((fieldName, type, parcelers) in properties) { - val asmType = codegen.typeMapper.mapType(type) - - v.load(1, parcelAsmType) - v.load(0, containerAsmType) - v.getfield(containerAsmType.internalName, fieldName, asmType.descriptor) - - val serializer = ParcelSerializer.get(type, asmType, globalContext.copy(typeParcelers = parcelers)) - serializer.writeValue(v) - } - - } - } - - v.areturn(Type.VOID_TYPE) - } - } - - private fun ClassDescriptor.writeDescribeContentsFunction( - codegen: ImplementationBodyCodegen, - propertiesToSerialize: List - ): Unit? { - val hasFileDescriptorAnywhere = propertiesToSerialize.any { it.type.containsFileDescriptor() } - - return findFunction(DESCRIBE_CONTENTS)?.write(codegen) { - v.aconst(if (hasFileDescriptorAnywhere) 1 /* CONTENTS_FILE_DESCRIPTOR */ else 0) - v.areturn(Type.INT_TYPE) - } - } - - private fun KotlinType.containsFileDescriptor(): Boolean { - val declarationDescriptor = this.constructor.declarationDescriptor - if (declarationDescriptor != null) { - if (declarationDescriptor.fqNameSafe == FILE_DESCRIPTOR_FQNAME) { - return true - } - } - - return this.arguments.any { it.type.containsFileDescriptor() } - } - - data class PropertyToSerialize(val name: String, val type: KotlinType, val parcelers: List) - - private fun getPropertiesToSerialize( - codegen: ImplementationBodyCodegen, - parcelableClass: ClassDescriptor - ): List { - if (parcelableClass.kind != ClassKind.CLASS) { - return emptyList() - } - - val constructor = parcelableClass.constructors.firstOrNull { it.isPrimary } ?: return emptyList() - - val propertiesToSerialize = constructor.valueParameters.mapNotNull { param -> - codegen.bindingContext[BindingContext.VALUE_PARAMETER_AS_PROPERTY, param] - } - - val classParcelers = getTypeParcelers(parcelableClass.annotations) - - return propertiesToSerialize.map { - PropertyToSerialize(it.name.asString(), it.type, classParcelers + getTypeParcelers(it.annotations)) - } - } - - private fun writeCreateFromParcel( - codegen: ImplementationBodyCodegen, - parcelableClass: ClassDescriptor, - parcelableCreatorClassType: KotlinType, - creatorClass: ClassDescriptorImpl, - parcelClassType: KotlinType, - parcelAsmType: Type, - parcelerObject: ClassDescriptor?, - properties: List - ) { - val containerAsmType = codegen.typeMapper.mapType(parcelableClass) - val creatorAsmType = codegen.typeMapper.mapType(creatorClass) - - val overriddenFunction = parcelableCreatorClassType.findFunction(CREATE_FROM_PARCEL) - ?: error("Can't resolve 'android.os.Parcelable.Creator.${CREATE_FROM_PARCEL.methodName}' method") - - createMethod( - creatorClass, CREATE_FROM_PARCEL, Modality.FINAL, - parcelableClass.defaultType.replaceArgumentsWithStarProjections(), "in" to parcelClassType - ).write(codegen, overriddenFunction) { - if (parcelerObject != null) { - val (companionAsmType, companionFieldName) = getCompanionClassType(containerAsmType, parcelerObject) - - v.getstatic(containerAsmType.internalName, companionFieldName, companionAsmType.descriptor) - v.load(1, PARCEL_TYPE) - v.invokevirtual(companionAsmType.internalName, "create", "(${PARCEL_TYPE.descriptor})$containerAsmType", false) - } else { - v.anew(containerAsmType) - v.dup() - - val asmConstructorParameters = StringBuilder() - val frameMap = FrameMap().apply { - enterTemp(creatorAsmType) - enterTemp(PARCEL_TYPE) - } - - val globalContext = ParcelSerializer.ParcelSerializerContext(codegen.typeMapper, containerAsmType, emptyList(), frameMap) - - if (properties.isEmpty()) { - val entityType = parcelableClass.defaultType - val asmType = codegen.state.typeMapper.mapType(entityType) - val serializer = if (parcelableClass.kind == ClassKind.CLASS) { - NullAwareParcelSerializerWrapper(ZeroParameterClassSerializer(asmType, entityType)) - } else { - ParcelSerializer.get(entityType, asmType, globalContext, strict = true) - } - v.load(1, parcelAsmType) - serializer.readValue(v) - } else { - for ((_, type, parcelers) in properties) { - val asmType = codegen.typeMapper.mapType(type) - asmConstructorParameters.append(asmType.descriptor) - - val serializer = ParcelSerializer.get(type, asmType, globalContext.copy(typeParcelers = parcelers)) - v.load(1, parcelAsmType) - serializer.readValue(v) - } - - v.invokespecial(containerAsmType.internalName, "", "($asmConstructorParameters)V", false) - } - } - - v.areturn(containerAsmType) - } - } - - private fun writeCreatorAccessField(codegen: ImplementationBodyCodegen, parcelableClass: ClassDescriptor) { - val creatorType = Type.getObjectType("android/os/Parcelable\$Creator") - val parcelableType = codegen.typeMapper.mapType(parcelableClass) - val fieldSignature = "L${creatorType.internalName}<${parcelableType.descriptor}>;" - - codegen.v.newField( - JvmDeclarationOrigin.NO_ORIGIN, - ACC_STATIC or ACC_PUBLIC or ACC_FINAL, - "CREATOR", - creatorType.descriptor, - fieldSignature, - null - ) - } - - private fun writeCreatorClass( - codegen: ImplementationBodyCodegen, - parcelableClass: ClassDescriptor, - parcelClassType: KotlinType, - parcelableCreatorClassType: KotlinType, - parcelAsmType: Type, - parcelerObject: ClassDescriptor?, - properties: List - ) { - val containerAsmType = codegen.typeMapper.mapType(parcelableClass.defaultType) - val creatorAsmType = Type.getObjectType(containerAsmType.internalName + "\$Creator") - - val creatorClass = ClassDescriptorImpl( - parcelableClass, Name.identifier("Creator"), Modality.FINAL, ClassKind.CLASS, listOf(parcelableCreatorClassType), - parcelableClass.source, false, LockBasedStorageManager.NO_LOCKS - ) - - creatorClass.initialize( - MemberScope.Empty, emptySet(), - DescriptorFactory.createPrimaryConstructorForObject(creatorClass, creatorClass.source) - ) - - val classBuilderForCreator = codegen.state.factory.newVisitor( - JvmDeclarationOrigin(JvmDeclarationOriginKind.OTHER, null, creatorClass), - Type.getObjectType(creatorAsmType.internalName), - codegen.myClass.containingKtFile - ) - - val classContextForCreator = ClassContext( - codegen.typeMapper, creatorClass, OwnerKind.IMPLEMENTATION, codegen.context.parentContext, null - ) - val codegenForCreator = ImplementationBodyCodegen( - codegen.myClass, classContextForCreator, classBuilderForCreator, codegen.state, codegen.parentCodegen, false - ) - - val classSignature = "Ljava/lang/Object;Landroid/os/Parcelable\$Creator<${containerAsmType.descriptor}>;" - classBuilderForCreator.defineClass( - null, V1_6, ACC_PUBLIC or ACC_FINAL or ACC_SUPER, - creatorAsmType.internalName, classSignature, "java/lang/Object", - arrayOf("android/os/Parcelable\$Creator") - ) - - codegen.v.visitInnerClass(creatorAsmType.internalName, containerAsmType.internalName, "Creator", ACC_PUBLIC or ACC_STATIC) - codegenForCreator.v.visitInnerClass(creatorAsmType.internalName, containerAsmType.internalName, "Creator", ACC_PUBLIC or ACC_STATIC) - - writeSyntheticClassMetadata(classBuilderForCreator, codegen.state, InlineUtil.isInPublicInlineScope(parcelableClass)) - - writeCreatorConstructor(codegenForCreator, creatorClass, creatorAsmType) - writeNewArrayMethod(codegenForCreator, parcelableClass, parcelableCreatorClassType, creatorClass, parcelerObject) - - writeCreateFromParcel( - codegenForCreator, - parcelableClass, parcelableCreatorClassType, creatorClass, parcelClassType, - parcelAsmType, parcelerObject, properties - ) - - classBuilderForCreator.done(codegen.state.generateSmapCopyToAnnotation) - } - - private fun writeCreatorConstructor(codegen: ImplementationBodyCodegen, creatorClass: ClassDescriptor, creatorAsmType: Type) { - DescriptorFactory.createPrimaryConstructorForObject(creatorClass, creatorClass.source) - .apply { - returnType = creatorClass.defaultType - }.write(codegen) { - v.load(0, creatorAsmType) - v.invokespecial("java/lang/Object", "", "()V", false) - v.areturn(Type.VOID_TYPE) - } - } - - private fun writeNewArrayMethod( - codegen: ImplementationBodyCodegen, - parcelableClass: ClassDescriptor, - parcelableCreatorClassType: KotlinType, - creatorClass: ClassDescriptorImpl, - parcelerObject: ClassDescriptor? - ) { - val builtIns = parcelableClass.builtIns - val parcelableAsmType = codegen.typeMapper.mapType(parcelableClass) - - val overriddenFunction = parcelableCreatorClassType.findFunction(NEW_ARRAY) - ?: error("Can't resolve 'android.os.Parcelable.Creator.${NEW_ARRAY.methodName}' method") - - createMethod( - creatorClass, NEW_ARRAY, Modality.FINAL, - builtIns.getArrayType(Variance.INVARIANT, parcelableClass.defaultType.replaceArgumentsWithStarProjections()), - "size" to builtIns.intType - ).write(codegen, overriddenFunction) { - if (parcelerObject != null) { - val newArrayMethod = parcelerObject.unsubstitutedMemberScope - .getContributedFunctions(NEW_ARRAY_NAME, NoLookupLocation.WHEN_GET_ALL_DESCRIPTORS) - .firstOrNull { - it.typeParameters.isEmpty() - && it.kind == CallableMemberDescriptor.Kind.DECLARATION - && (it.valueParameters.size == 1 && KotlinBuiltIns.isInt(it.valueParameters[0].type)) - && !((it.containingDeclaration as? ClassDescriptor)?.defaultType?.isParceler ?: true) - } - - if (newArrayMethod != null) { - val containerAsmType = codegen.typeMapper.mapType(parcelableClass.defaultType) - val (companionAsmType, companionFieldName) = getCompanionClassType(containerAsmType, parcelerObject) - - v.getstatic(containerAsmType.internalName, companionFieldName, companionAsmType.descriptor) - v.load(1, Type.INT_TYPE) - v.invokevirtual(companionAsmType.internalName, "newArray", "(I)[$parcelableAsmType", false) - v.areturn(Type.getType("[$parcelableAsmType")) - - return@write - } - } - - v.load(1, Type.INT_TYPE) - v.newarray(parcelableAsmType) - v.areturn(Type.getType("[$parcelableAsmType")) - } - } - - private fun FunctionDescriptor.write( - codegen: ImplementationBodyCodegen, - overriddenDescriptor: FunctionDescriptor? = null, - code: ExpressionCodegen.() -> Unit - ) { - val declarationOrigin = JvmDeclarationOrigin(JvmDeclarationOriginKind.OTHER, null, this) - if (overriddenDescriptor != null) { - this.overriddenDescriptors = listOf(overriddenDescriptor) - } - - codegen.functionCodegen.generateMethod(declarationOrigin, this, object : CodegenBased(codegen.state) { - override fun doGenerateBody(e: ExpressionCodegen, signature: JvmMethodSignature) = with(e) { - e.code() - } - }) - } - - private fun KotlinType.findFunction(componentKind: ParcelizeSyntheticComponent.ComponentKind): SimpleFunctionDescriptor? { - return memberScope - .getContributedFunctions(Name.identifier(componentKind.methodName), NoLookupLocation.WHEN_GET_ALL_DESCRIPTORS) - .firstOrNull() - } -} diff --git a/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ParcelizeFirIrGeneratorExtension.kt b/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ParcelizeFirIrGeneratorExtension.kt index 4582fcacb73..02f11e6a33b 100644 --- a/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ParcelizeFirIrGeneratorExtension.kt +++ b/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ParcelizeFirIrGeneratorExtension.kt @@ -8,8 +8,6 @@ package org.jetbrains.kotlin.parcelize import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext import org.jetbrains.kotlin.ir.declarations.IrModuleFragment -import org.jetbrains.kotlin.parcelize.ir.AndroidSymbols -import org.jetbrains.kotlin.parcelize.ir.ParcelizeFirIrTransformer class ParcelizeFirIrGeneratorExtension : IrGenerationExtension { override fun generate(moduleFragment: IrModuleFragment, pluginContext: IrPluginContext) { diff --git a/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ir/ParcelizeFirIrTransformer.kt b/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ParcelizeFirIrTransformer.kt similarity index 97% rename from plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ir/ParcelizeFirIrTransformer.kt rename to plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ParcelizeFirIrTransformer.kt index a0157e0835f..082c842a2a0 100644 --- a/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ir/ParcelizeFirIrTransformer.kt +++ b/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ParcelizeFirIrTransformer.kt @@ -3,7 +3,7 @@ * 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.parcelize.ir +package org.jetbrains.kotlin.parcelize import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext import org.jetbrains.kotlin.descriptors.Modality @@ -15,7 +15,6 @@ import org.jetbrains.kotlin.ir.util.companionObject import org.jetbrains.kotlin.ir.util.functions import org.jetbrains.kotlin.ir.util.render import org.jetbrains.kotlin.parcelize.ParcelizeNames.PARCELER_FQN -import org.jetbrains.kotlin.parcelize.ParcelizeSyntheticComponent import org.jetbrains.kotlin.parcelize.fir.ParcelizePluginKey class ParcelizeFirIrTransformer( diff --git a/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ParcelizeIrGeneratorExtension.kt b/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ParcelizeIrGeneratorExtension.kt index 3cd1d417988..fda849cbbb9 100644 --- a/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ParcelizeIrGeneratorExtension.kt +++ b/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ParcelizeIrGeneratorExtension.kt @@ -8,8 +8,6 @@ package org.jetbrains.kotlin.parcelize import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext import org.jetbrains.kotlin.ir.declarations.IrModuleFragment -import org.jetbrains.kotlin.parcelize.ir.AndroidSymbols -import org.jetbrains.kotlin.parcelize.ir.ParcelizeIrTransformer class ParcelizeIrGeneratorExtension : IrGenerationExtension { override fun generate(moduleFragment: IrModuleFragment, pluginContext: IrPluginContext) { @@ -17,4 +15,3 @@ class ParcelizeIrGeneratorExtension : IrGenerationExtension { ParcelizeIrTransformer(pluginContext, androidSymbols).transform(moduleFragment) } } - diff --git a/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ir/ParcelizeIrTransformer.kt b/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ParcelizeIrTransformer.kt similarity index 98% rename from plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ir/ParcelizeIrTransformer.kt rename to plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ParcelizeIrTransformer.kt index 675d475d4a1..fbc9c027916 100644 --- a/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ir/ParcelizeIrTransformer.kt +++ b/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ParcelizeIrTransformer.kt @@ -3,7 +3,7 @@ * 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.parcelize.ir +package org.jetbrains.kotlin.parcelize import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext import org.jetbrains.kotlin.descriptors.Modality @@ -35,7 +35,6 @@ import org.jetbrains.kotlin.parcelize.ParcelizeNames.FLAGS_NAME import org.jetbrains.kotlin.parcelize.ParcelizeNames.PARCELABLE_FQN import org.jetbrains.kotlin.parcelize.ParcelizeNames.PARCELER_FQN import org.jetbrains.kotlin.parcelize.ParcelizeNames.WRITE_TO_PARCEL_NAME -import org.jetbrains.kotlin.parcelize.ParcelizeSyntheticComponent @OptIn(ObsoleteDescriptorBasedAPI::class) class ParcelizeIrTransformer( diff --git a/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ir/ParcelizeIrTransformerBase.kt b/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ParcelizeIrTransformerBase.kt similarity index 99% rename from plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ir/ParcelizeIrTransformerBase.kt rename to plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ParcelizeIrTransformerBase.kt index 41d4e1a4b1c..10de5abe405 100644 --- a/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ir/ParcelizeIrTransformerBase.kt +++ b/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ParcelizeIrTransformerBase.kt @@ -3,7 +3,7 @@ * 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.parcelize.ir +package org.jetbrains.kotlin.parcelize import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext import org.jetbrains.kotlin.backend.common.lower.DeclarationIrBuilder diff --git a/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ir/irUtils.kt b/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/irUtils.kt similarity index 99% rename from plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ir/irUtils.kt rename to plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/irUtils.kt index 14bb251a62d..847ad47a9fd 100644 --- a/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/ir/irUtils.kt +++ b/plugins/parcelize/parcelize-compiler/parcelize.backend/src/org/jetbrains/kotlin/parcelize/irUtils.kt @@ -3,7 +3,7 @@ * 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.parcelize.ir +package org.jetbrains.kotlin.parcelize import org.jetbrains.kotlin.backend.jvm.ir.erasedUpperBound import org.jetbrains.kotlin.descriptors.DescriptorVisibilities diff --git a/plugins/parcelize/parcelize-compiler/parcelize.cli/src/org/jetbrains/kotlin/parcelize/ParcelizeComponentRegistrar.kt b/plugins/parcelize/parcelize-compiler/parcelize.cli/src/org/jetbrains/kotlin/parcelize/ParcelizeComponentRegistrar.kt index 026c9b8e9cb..95d34be02d7 100644 --- a/plugins/parcelize/parcelize-compiler/parcelize.cli/src/org/jetbrains/kotlin/parcelize/ParcelizeComponentRegistrar.kt +++ b/plugins/parcelize/parcelize-compiler/parcelize.cli/src/org/jetbrains/kotlin/parcelize/ParcelizeComponentRegistrar.kt @@ -6,8 +6,6 @@ package org.jetbrains.kotlin.parcelize import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension -import org.jetbrains.kotlin.codegen.extensions.ClassBuilderInterceptorExtension -import org.jetbrains.kotlin.codegen.extensions.ExpressionCodegenExtension import org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar import org.jetbrains.kotlin.config.CommonConfigurationKeys import org.jetbrains.kotlin.config.CompilerConfiguration @@ -24,14 +22,12 @@ import org.jetbrains.kotlin.resolve.extensions.SyntheticResolveExtension class ParcelizeComponentRegistrar : CompilerPluginRegistrar() { companion object { fun registerParcelizeComponents(extensionStorage: ExtensionStorage, useFir: Boolean) = with(extensionStorage) { - ExpressionCodegenExtension.registerExtension(ParcelizeCodegenExtension()) if (useFir) { IrGenerationExtension.registerExtension(ParcelizeFirIrGeneratorExtension()) } else { IrGenerationExtension.registerExtension(ParcelizeIrGeneratorExtension()) } SyntheticResolveExtension.registerExtension(ParcelizeResolveExtension()) - ClassBuilderInterceptorExtension.registerExtension(ParcelizeClinitClassBuilderInterceptorExtension()) StorageComponentContainerContributor.registerExtension(ParcelizeDeclarationCheckerComponentContainerContributor()) FirExtensionRegistrarAdapter.registerExtension(FirParcelizeExtensionRegistrar()) } diff --git a/plugins/parcelize/parcelize-compiler/parcelize.k1/src/org/jetbrains/kotlin/parcelize/ParcelizeResolveExtension.kt b/plugins/parcelize/parcelize-compiler/parcelize.k1/src/org/jetbrains/kotlin/parcelize/ParcelizeResolveExtension.kt index 6f99367f7a3..1baf0ff9144 100644 --- a/plugins/parcelize/parcelize-compiler/parcelize.k1/src/org/jetbrains/kotlin/parcelize/ParcelizeResolveExtension.kt +++ b/plugins/parcelize/parcelize-compiler/parcelize.k1/src/org/jetbrains/kotlin/parcelize/ParcelizeResolveExtension.kt @@ -27,7 +27,6 @@ import org.jetbrains.kotlin.descriptors.impl.ValueParameterDescriptorImpl import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.parcelize.ParcelizeNames.CREATE_FROM_PARCEL_NAME -import org.jetbrains.kotlin.parcelize.ParcelizeNames.CREATOR_ID import org.jetbrains.kotlin.parcelize.ParcelizeNames.DESCRIBE_CONTENTS_NAME import org.jetbrains.kotlin.parcelize.ParcelizeNames.NEW_ARRAY_NAME import org.jetbrains.kotlin.parcelize.ParcelizeNames.PARCELER_FQN @@ -42,10 +41,10 @@ import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.descriptorUtil.* import org.jetbrains.kotlin.resolve.extensions.SyntheticResolveExtension import org.jetbrains.kotlin.resolve.source.PsiSourceElement -import org.jetbrains.kotlin.types.error.ErrorTypeKind -import org.jetbrains.kotlin.types.error.ErrorUtils import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.SimpleType +import org.jetbrains.kotlin.types.error.ErrorTypeKind +import org.jetbrains.kotlin.types.error.ErrorUtils open class ParcelizeResolveExtension : SyntheticResolveExtension { companion object { @@ -53,11 +52,6 @@ open class ParcelizeResolveExtension : SyntheticResolveExtension { return module.findClassAcrossModuleDependencies(PARCEL_ID)?.defaultType } - fun resolveParcelableCreatorClassType(module: ModuleDescriptor): SimpleType? { - val creatorClassId = CREATOR_ID - return module.findClassAcrossModuleDependencies(creatorClassId)?.defaultType - } - fun createMethod( classDescriptor: ClassDescriptor, componentKind: ParcelizeSyntheticComponent.ComponentKind, diff --git a/plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeBoxTestGenerated.java b/plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeBoxTestGenerated.java deleted file mode 100644 index 117cbabc073..00000000000 --- a/plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeBoxTestGenerated.java +++ /dev/null @@ -1,507 +0,0 @@ -/* - * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.parcelize.test.runners; - -import com.intellij.testFramework.TestDataPath; -import org.jetbrains.kotlin.test.util.KtTestUtil; -import org.jetbrains.kotlin.test.TargetBackend; -import org.jetbrains.kotlin.test.TestMetadata; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; - -import java.io.File; -import java.util.regex.Pattern; - -/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.GenerateTestsKt}. DO NOT MODIFY MANUALLY */ -@SuppressWarnings("all") -@TestMetadata("plugins/parcelize/parcelize-compiler/testData/box") -@TestDataPath("$PROJECT_ROOT") -public class ParcelizeBoxTestGenerated extends AbstractParcelizeBoxTest { - @Test - public void testAllFilesPresentInBox() throws Exception { - KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/parcelize/parcelize-compiler/testData/box"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true); - } - - @Test - @TestMetadata("allPrimitiveTypes.kt") - public void testAllPrimitiveTypes() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/allPrimitiveTypes.kt"); - } - - @Test - @TestMetadata("allUnsignedTypes.kt") - public void testAllUnsignedTypes() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/allUnsignedTypes.kt"); - } - - @Test - @TestMetadata("arraySimple.kt") - public void testArraySimple() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/arraySimple.kt"); - } - - @Test - @TestMetadata("arrays.kt") - public void testArrays() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/arrays.kt"); - } - - @Test - @TestMetadata("binder.kt") - public void testBinder() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/binder.kt"); - } - - @Test - @TestMetadata("boxedTypes.kt") - public void testBoxedTypes() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/boxedTypes.kt"); - } - - @Test - @TestMetadata("bundle.kt") - public void testBundle() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/bundle.kt"); - } - - @Test - @TestMetadata("charSequence.kt") - public void testCharSequence() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/charSequence.kt"); - } - - @Test - @TestMetadata("constructorWithoutValOrVar.kt") - public void testConstructorWithoutValOrVar() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/constructorWithoutValOrVar.kt"); - } - - @Test - @TestMetadata("customNewArray.kt") - public void testCustomNewArray() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/customNewArray.kt"); - } - - @Test - @TestMetadata("customParcelable.kt") - public void testCustomParcelable() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/customParcelable.kt"); - } - - @Test - @TestMetadata("customParcelerChecks.kt") - public void testCustomParcelerChecks() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/customParcelerChecks.kt"); - } - - @Test - @TestMetadata("customParcelerScoping.kt") - public void testCustomParcelerScoping() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/customParcelerScoping.kt"); - } - - @Test - @TestMetadata("customSerializerBoxing.kt") - public void testCustomSerializerBoxing() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/customSerializerBoxing.kt"); - } - - @Test - @TestMetadata("customSerializerSimple.kt") - public void testCustomSerializerSimple() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/customSerializerSimple.kt"); - } - - @Test - @TestMetadata("customSerializerWriteWith.kt") - public void testCustomSerializerWriteWith() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/customSerializerWriteWith.kt"); - } - - @Test - @TestMetadata("customSimple.kt") - public void testCustomSimple() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/customSimple.kt"); - } - - @Test - @TestMetadata("enumObject.kt") - public void testEnumObject() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/enumObject.kt"); - } - - @Test - @TestMetadata("enums.kt") - public void testEnums() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/enums.kt"); - } - - @Test - @TestMetadata("exceptions.kt") - public void testExceptions() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/exceptions.kt"); - } - - @Test - @TestMetadata("functions.kt") - public void testFunctions() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/functions.kt"); - } - - @Test - @TestMetadata("genericParcelable.kt") - public void testGenericParcelable() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/genericParcelable.kt"); - } - - @Test - @TestMetadata("generics.kt") - public void testGenerics() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/generics.kt"); - } - - @Test - @TestMetadata("ignoredOnParcel.kt") - public void testIgnoredOnParcel() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/ignoredOnParcel.kt"); - } - - @Test - @TestMetadata("intArray.kt") - public void testIntArray() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/intArray.kt"); - } - - @Test - @TestMetadata("javaInterop.kt") - public void testJavaInterop() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/javaInterop.kt"); - } - - @Test - @TestMetadata("kt19747.kt") - public void testKt19747() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/kt19747.kt"); - } - - @Test - @TestMetadata("kt19747Deprecated.kt") - public void testKt19747Deprecated() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/kt19747Deprecated.kt"); - } - - @Test - @TestMetadata("kt19747_2.kt") - public void testKt19747_2() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/kt19747_2.kt"); - } - - @Test - @TestMetadata("kt19749.kt") - public void testKt19749() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/kt19749.kt"); - } - - @Test - @TestMetadata("kt19853.kt") - public void testKt19853() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/kt19853.kt"); - } - - @Test - @TestMetadata("kt20002.kt") - public void testKt20002() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/kt20002.kt"); - } - - @Test - @TestMetadata("kt20021.kt") - public void testKt20021() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/kt20021.kt"); - } - - @Test - @TestMetadata("kt20717.kt") - public void testKt20717() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/kt20717.kt"); - } - - @Test - @TestMetadata("kt25839.kt") - public void testKt25839() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/kt25839.kt"); - } - - @Test - @TestMetadata("kt26221.kt") - public void testKt26221() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/kt26221.kt"); - } - - @Test - @TestMetadata("kt36658.kt") - public void testKt36658() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/kt36658.kt"); - } - - @Test - @TestMetadata("kt39981.kt") - public void testKt39981() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/kt39981.kt"); - } - - @Test - @TestMetadata("kt41553.kt") - public void testKt41553() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/kt41553.kt"); - } - - @Test - @TestMetadata("kt41553_2.kt") - public void testKt41553_2() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/kt41553_2.kt"); - } - - @Test - @TestMetadata("kt46567.kt") - public void testKt46567() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/kt46567.kt"); - } - - @Test - @TestMetadata("listKinds.kt") - public void testListKinds() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/listKinds.kt"); - } - - @Test - @TestMetadata("listSimple.kt") - public void testListSimple() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/listSimple.kt"); - } - - @Test - @TestMetadata("lists.kt") - public void testLists() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/lists.kt"); - } - - @Test - @TestMetadata("mapKinds.kt") - public void testMapKinds() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/mapKinds.kt"); - } - - @Test - @TestMetadata("mapSimple.kt") - public void testMapSimple() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/mapSimple.kt"); - } - - @Test - @TestMetadata("maps.kt") - public void testMaps() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/maps.kt"); - } - - @Test - @TestMetadata("nestedArrays.kt") - public void testNestedArrays() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/nestedArrays.kt"); - } - - @Test - @TestMetadata("nestedLists.kt") - public void testNestedLists() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/nestedLists.kt"); - } - - @Test - @TestMetadata("nestedMaps.kt") - public void testNestedMaps() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/nestedMaps.kt"); - } - - @Test - @TestMetadata("nestedParcelable.kt") - public void testNestedParcelable() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/nestedParcelable.kt"); - } - - @Test - @TestMetadata("nestedSparseArrays.kt") - public void testNestedSparseArrays() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/nestedSparseArrays.kt"); - } - - @Test - @TestMetadata("nestedSparseArrays2.kt") - public void testNestedSparseArrays2() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/nestedSparseArrays2.kt"); - } - - @Test - @TestMetadata("newArray.kt") - public void testNewArray() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/newArray.kt"); - } - - @Test - @TestMetadata("newArrayParceler.kt") - public void testNewArrayParceler() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/newArrayParceler.kt"); - } - - @Test - @TestMetadata("nullableSparseArrays.kt") - public void testNullableSparseArrays() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/nullableSparseArrays.kt"); - } - - @Test - @TestMetadata("nullableTypes.kt") - public void testNullableTypes() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/nullableTypes.kt"); - } - - @Test - @TestMetadata("nullableTypesSimple.kt") - public void testNullableTypesSimple() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/nullableTypesSimple.kt"); - } - - @Test - @TestMetadata("objectWriteParcelable.kt") - public void testObjectWriteParcelable() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/objectWriteParcelable.kt"); - } - - @Test - @TestMetadata("objects.kt") - public void testObjects() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/objects.kt"); - } - - @Test - @TestMetadata("openParcelize.kt") - public void testOpenParcelize() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/openParcelize.kt"); - } - - @Test - @TestMetadata("overriddenDescribeContents.kt") - public void testOverriddenDescribeContents() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/overriddenDescribeContents.kt"); - } - - @Test - @TestMetadata("parcelableValueClass.kt") - public void testParcelableValueClass() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/parcelableValueClass.kt"); - } - - @Test - @TestMetadata("parcelizeCustomValueClass.kt") - public void testParcelizeCustomValueClass() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/parcelizeCustomValueClass.kt"); - } - - @Test - @TestMetadata("persistableBundle.kt") - public void testPersistableBundle() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/persistableBundle.kt"); - } - - @Test - @TestMetadata("primitiveTypes.kt") - public void testPrimitiveTypes() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/primitiveTypes.kt"); - } - - @Test - @TestMetadata("privateConstructor.kt") - public void testPrivateConstructor() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/privateConstructor.kt"); - } - - @Test - @TestMetadata("recursiveGenerics.kt") - public void testRecursiveGenerics() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/recursiveGenerics.kt"); - } - - @Test - @TestMetadata("sealedClass.kt") - public void testSealedClass() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/sealedClass.kt"); - } - - @Test - @TestMetadata("sealedClass2.kt") - public void testSealedClass2() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/sealedClass2.kt"); - } - - @Test - @TestMetadata("sealedInterface.kt") - public void testSealedInterface() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/sealedInterface.kt"); - } - - @Test - @TestMetadata("shortArray.kt") - public void testShortArray() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/shortArray.kt"); - } - - @Test - @TestMetadata("simple.kt") - public void testSimple() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/simple.kt"); - } - - @Test - @TestMetadata("simpleDeprecated.kt") - public void testSimpleDeprecated() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/simpleDeprecated.kt"); - } - - @Test - @TestMetadata("sparseArrays.kt") - public void testSparseArrays() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/sparseArrays.kt"); - } - - @Test - @TestMetadata("sparseBooleanArray.kt") - public void testSparseBooleanArray() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/sparseBooleanArray.kt"); - } - - @Test - @TestMetadata("typeParameters.kt") - public void testTypeParameters() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/typeParameters.kt"); - } - - @Test - @TestMetadata("unsignedArrays.kt") - public void testUnsignedArrays() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/unsignedArrays.kt"); - } - - @Test - @TestMetadata("valueClassWrapper.kt") - public void testValueClassWrapper() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/valueClassWrapper.kt"); - } - - @Test - @TestMetadata("valueClasses.kt") - public void testValueClasses() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/box/valueClasses.kt"); - } -} diff --git a/plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeBytecodeListingTestGenerated.java b/plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeBytecodeListingTestGenerated.java deleted file mode 100644 index ea8889c32b8..00000000000 --- a/plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeBytecodeListingTestGenerated.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.parcelize.test.runners; - -import com.intellij.testFramework.TestDataPath; -import org.jetbrains.kotlin.test.util.KtTestUtil; -import org.jetbrains.kotlin.test.TargetBackend; -import org.jetbrains.kotlin.test.TestMetadata; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; - -import java.io.File; -import java.util.regex.Pattern; - -/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.GenerateTestsKt}. DO NOT MODIFY MANUALLY */ -@SuppressWarnings("all") -@TestMetadata("plugins/parcelize/parcelize-compiler/testData/codegen") -@TestDataPath("$PROJECT_ROOT") -public class ParcelizeBytecodeListingTestGenerated extends AbstractParcelizeBytecodeListingTest { - @Test - public void testAllFilesPresentInCodegen() throws Exception { - KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/parcelize/parcelize-compiler/testData/codegen"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true); - } - - @Test - @TestMetadata("classLoaderValues.kt") - public void testClassLoaderValues() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/codegen/classLoaderValues.kt"); - } - - @Test - @TestMetadata("customDescribeContents.kt") - public void testCustomDescribeContents() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/codegen/customDescribeContents.kt"); - } - - @Test - @TestMetadata("customParcelablesDifferentModule.kt") - public void testCustomParcelablesDifferentModule() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesDifferentModule.kt"); - } - - @Test - @TestMetadata("customParcelablesSameModule.kt") - public void testCustomParcelablesSameModule() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesSameModule.kt"); - } - - @Test - @TestMetadata("customSimple.kt") - public void testCustomSimple() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/codegen/customSimple.kt"); - } - - @Test - @TestMetadata("customSimpleWithNewArray.kt") - public void testCustomSimpleWithNewArray() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/codegen/customSimpleWithNewArray.kt"); - } - - @Test - @TestMetadata("describeContentsFromSuperType.kt") - public void testDescribeContentsFromSuperType() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/codegen/describeContentsFromSuperType.kt"); - } - - @Test - @TestMetadata("duplicatingClinit.kt") - public void testDuplicatingClinit() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/codegen/duplicatingClinit.kt"); - } - - @Test - @TestMetadata("efficientParcelable.kt") - public void testEfficientParcelable() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/codegen/efficientParcelable.kt"); - } - - @Test - @TestMetadata("generics.kt") - public void testGenerics() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/codegen/generics.kt"); - } - - @Test - @TestMetadata("IBinderIInterface.kt") - public void testIBinderIInterface() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/codegen/IBinderIInterface.kt"); - } - - @Test - @TestMetadata("kt25839.kt") - public void testKt25839() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/codegen/kt25839.kt"); - } - - @Test - @TestMetadata("listInsideList.kt") - public void testListInsideList() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/codegen/listInsideList.kt"); - } - - @Test - @TestMetadata("nullableNotNullSize.kt") - public void testNullableNotNullSize() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/codegen/nullableNotNullSize.kt"); - } - - @Test - @TestMetadata("parcelable.kt") - public void testParcelable() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/codegen/parcelable.kt"); - } - - @Test - @TestMetadata("parcelableCreator.kt") - public void testParcelableCreator() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/codegen/parcelableCreator.kt"); - } - - @Test - @TestMetadata("serializable.kt") - public void testSerializable() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/codegen/serializable.kt"); - } - - @Test - @TestMetadata("serializeValue.kt") - public void testSerializeValue() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/codegen/serializeValue.kt"); - } - - @Test - @TestMetadata("simple.kt") - public void testSimple() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/codegen/simple.kt"); - } - - @Test - @TestMetadata("simpleList.kt") - public void testSimpleList() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/codegen/simpleList.kt"); - } - - @Test - @TestMetadata("size.kt") - public void testSize() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/codegen/size.kt"); - } - - @Test - @TestMetadata("unsignedPrimitiveArrays.kt") - public void testUnsignedPrimitiveArrays() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/codegen/unsignedPrimitiveArrays.kt"); - } -} diff --git a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/AbstractParcelizeBoxTest.kt b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/AbstractParcelizeBoxTest.kt index 23592528234..24845565a46 100644 --- a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/AbstractParcelizeBoxTest.kt +++ b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/AbstractParcelizeBoxTest.kt @@ -90,20 +90,6 @@ abstract class AbstractParcelizeBoxTestBase( - FrontendKinds.ClassicFrontend, - TargetBackend.JVM -) { - override val frontendFacade: Constructor> - get() = ::ClassicFrontendFacade - - override val frontendToBackendConverter: Constructor> - get() = ::ClassicFrontend2ClassicBackendConverter - - override val backendFacade: Constructor> - get() = ::ClassicJvmBackendFacade -} - open class AbstractParcelizeIrBoxTest : AbstractParcelizeBoxTestBase( FrontendKinds.ClassicFrontend, TargetBackend.JVM_IR diff --git a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/AbstractParcelizeBytecodeListingTest.kt b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/AbstractParcelizeBytecodeListingTest.kt index b643405209f..088dd3f077b 100644 --- a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/AbstractParcelizeBytecodeListingTest.kt +++ b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/AbstractParcelizeBytecodeListingTest.kt @@ -8,16 +8,8 @@ package org.jetbrains.kotlin.parcelize.test.runners import org.jetbrains.kotlin.parcelize.test.services.ParcelizeEnvironmentConfigurator import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.directives.AsmLikeInstructionListingDirectives.IR_DIFFERENCE -import org.jetbrains.kotlin.test.runners.codegen.AbstractAsmLikeInstructionListingTest import org.jetbrains.kotlin.test.runners.codegen.AbstractIrAsmLikeInstructionListingTest -open class AbstractParcelizeBytecodeListingTest : AbstractAsmLikeInstructionListingTest() { - override fun configure(builder: TestConfigurationBuilder) { - super.configure(builder) - builder.configureParcelizeSpecific() - } -} - open class AbstractParcelizeIrBytecodeListingTest : AbstractIrAsmLikeInstructionListingTest() { override fun configure(builder: TestConfigurationBuilder) { super.configure(builder) diff --git a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeBoxTestWithSerializableLikeExtension.kt b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeBoxTestWithSerializableLikeExtension.kt deleted file mode 100644 index ede27aec6d9..00000000000 --- a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeBoxTestWithSerializableLikeExtension.kt +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.parcelize.test.runners - -import com.intellij.testFramework.TestDataPath -import org.jetbrains.kotlin.parcelize.test.services.SerializableLikeExtensionProvider -import org.jetbrains.kotlin.test.TestMetadata -import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder -import org.junit.jupiter.api.Test - -@TestMetadata("plugins/parcelize/parcelize-compiler/testData/box") -@TestDataPath("\$PROJECT_ROOT") -class ParcelizeBoxTestWithSerializableLikeExtension : AbstractParcelizeBoxTest() { - @Test - @TestMetadata("simple.kt") - fun testSimple() { - runTest("plugins/parcelize/parcelize-compiler/testData/box/simple.kt") - } - - override fun configure(builder: TestConfigurationBuilder) { - super.configure(builder) - builder.useConfigurators(::SerializableLikeExtensionProvider) - } -}