Parcelable: Use innerClassNameFactory to figure out the internal name of the Creator class (KT-19680)
KAPT3 class builder mode in 1.1.4 replaces '$' (inner class name separators) with '/' by providing special innerClassNameFactory. We should use it to be compatible with kapt.
This commit is contained in:
committed by
Yan Zhulanow
parent
84e59601c1
commit
c330285fd0
+5
-2
@@ -210,7 +210,9 @@ open class ParcelableCodegenExtension : ExpressionCodegenExtension {
|
||||
|
||||
private fun writeCreatorAccessField(codegen: ImplementationBodyCodegen, parcelableClass: ClassDescriptor) {
|
||||
val parcelableAsmType = codegen.typeMapper.mapType(parcelableClass.defaultType)
|
||||
val creatorAsmType = Type.getObjectType(parcelableAsmType.internalName + "\$Creator")
|
||||
val creatorAsmType = Type.getObjectType(
|
||||
codegen.typeMapper.typeMappingConfiguration.innerClassNameFactory(parcelableAsmType.internalName, "Creator"))
|
||||
|
||||
codegen.v.newField(JvmDeclarationOrigin.NO_ORIGIN, ACC_STATIC or ACC_PUBLIC or ACC_FINAL, "CREATOR",
|
||||
creatorAsmType.descriptor, null, null)
|
||||
}
|
||||
@@ -224,7 +226,8 @@ open class ParcelableCodegenExtension : ExpressionCodegenExtension {
|
||||
properties: List<Pair<String, KotlinType>>
|
||||
) {
|
||||
val containerAsmType = codegen.typeMapper.mapType(parcelableClass.defaultType)
|
||||
val creatorAsmType = Type.getObjectType(containerAsmType.internalName + "\$Creator")
|
||||
val creatorAsmType = Type.getObjectType(
|
||||
codegen.typeMapper.typeMappingConfiguration.innerClassNameFactory(containerAsmType.internalName, "Creator"))
|
||||
|
||||
val creatorClass = ClassDescriptorImpl(
|
||||
parcelableClass.containingDeclaration, Name.identifier("Creator"), Modality.FINAL, ClassKind.CLASS, emptyList(),
|
||||
|
||||
Reference in New Issue
Block a user