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.
This commit is contained in:
@@ -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<String>) {
|
||||
val excludedFirTestdataPattern = "^(.+)\\.fir\\.kts?\$"
|
||||
|
||||
testGroup("plugins/parcelize/parcelize-compiler/tests-gen", "plugins/parcelize/parcelize-compiler/testData") {
|
||||
testClass<AbstractParcelizeBoxTest> {
|
||||
model("box")
|
||||
}
|
||||
|
||||
testClass<AbstractParcelizeIrBoxTest> {
|
||||
model("box")
|
||||
}
|
||||
@@ -212,10 +210,6 @@ fun main(args: Array<String>) {
|
||||
model("box")
|
||||
}
|
||||
|
||||
testClass<AbstractParcelizeBytecodeListingTest> {
|
||||
model("codegen")
|
||||
}
|
||||
|
||||
testClass<AbstractParcelizeIrBytecodeListingTest> {
|
||||
model("codegen")
|
||||
}
|
||||
|
||||
+2
-1
@@ -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.*
|
||||
+2
-1
@@ -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
|
||||
+1
-1
@@ -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
|
||||
+1
-1
@@ -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
|
||||
+1
-1
@@ -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
|
||||
-144
@@ -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<out String>
|
||||
) {
|
||||
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, "<clinit>", "()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<out String>?
|
||||
): MethodVisitor {
|
||||
if (name == "<clinit>" && 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, "<init>", "()V", false)
|
||||
iv.putstatic(parcelableName, "CREATOR", "Landroid/os/Parcelable\$Creator;")
|
||||
}
|
||||
|
||||
super.visitInsn(opcode)
|
||||
}
|
||||
}
|
||||
}
|
||||
-426
@@ -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<Type, String> {
|
||||
val shortName = parcelerObject.name
|
||||
return Pair(Type.getObjectType(containerAsmType.internalName + "\$$shortName"), shortName.asString())
|
||||
}
|
||||
|
||||
private fun ClassDescriptor.writeWriteToParcel(
|
||||
codegen: ImplementationBodyCodegen,
|
||||
properties: List<PropertyToSerialize>,
|
||||
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<PropertyToSerialize>
|
||||
): 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<TypeParcelerMapping>)
|
||||
|
||||
private fun getPropertiesToSerialize(
|
||||
codegen: ImplementationBodyCodegen,
|
||||
parcelableClass: ClassDescriptor
|
||||
): List<PropertyToSerialize> {
|
||||
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<PropertyToSerialize>
|
||||
) {
|
||||
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, "<init>", "($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<PropertyToSerialize>
|
||||
) {
|
||||
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", "<init>", "()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()
|
||||
}
|
||||
}
|
||||
-2
@@ -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) {
|
||||
|
||||
+1
-2
@@ -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(
|
||||
-3
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-2
@@ -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(
|
||||
+1
-1
@@ -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
|
||||
+1
-1
@@ -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
|
||||
-4
@@ -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())
|
||||
}
|
||||
|
||||
+2
-8
@@ -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,
|
||||
|
||||
-507
@@ -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");
|
||||
}
|
||||
}
|
||||
-159
@@ -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");
|
||||
}
|
||||
}
|
||||
-14
@@ -90,20 +90,6 @@ abstract class AbstractParcelizeBoxTestBase<R : ResultingArtifact.FrontendOutput
|
||||
}
|
||||
}
|
||||
|
||||
open class AbstractParcelizeBoxTest : AbstractParcelizeBoxTestBase<ClassicFrontendOutputArtifact, ClassicBackendInput>(
|
||||
FrontendKinds.ClassicFrontend,
|
||||
TargetBackend.JVM
|
||||
) {
|
||||
override val frontendFacade: Constructor<FrontendFacade<ClassicFrontendOutputArtifact>>
|
||||
get() = ::ClassicFrontendFacade
|
||||
|
||||
override val frontendToBackendConverter: Constructor<Frontend2BackendConverter<ClassicFrontendOutputArtifact, ClassicBackendInput>>
|
||||
get() = ::ClassicFrontend2ClassicBackendConverter
|
||||
|
||||
override val backendFacade: Constructor<BackendFacade<ClassicBackendInput, BinaryArtifacts.Jvm>>
|
||||
get() = ::ClassicJvmBackendFacade
|
||||
}
|
||||
|
||||
open class AbstractParcelizeIrBoxTest : AbstractParcelizeBoxTestBase<ClassicFrontendOutputArtifact, IrBackendInput>(
|
||||
FrontendKinds.ClassicFrontend,
|
||||
TargetBackend.JVM_IR
|
||||
|
||||
-8
@@ -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)
|
||||
|
||||
-27
@@ -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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user