Parcelable: Use java/lang/Enum methods to read/write enum values (KT-20022)
This commit is contained in:
committed by
Yan Zhulanow
parent
7b96c9a003
commit
88138fc420
+5
-2
@@ -418,13 +418,16 @@ internal class ObjectParcelSerializer(
|
||||
|
||||
internal class EnumParcelSerializer(override val asmType: Type) : ParcelSerializer {
|
||||
override fun writeValue(v: InstructionAdapter) {
|
||||
v.invokevirtual(asmType.internalName, "name", "()Ljava/lang/String;", false)
|
||||
v.invokevirtual("java/lang/Enum", "name", "()Ljava/lang/String;", false)
|
||||
v.invokevirtual(PARCEL_TYPE.internalName, "writeString", "(Ljava/lang/String;)V", false)
|
||||
}
|
||||
|
||||
override fun readValue(v: InstructionAdapter) {
|
||||
v.invokevirtual(PARCEL_TYPE.internalName, "readString", "()Ljava/lang/String;", false)
|
||||
v.invokestatic(asmType.internalName, "valueOf", "(Ljava/lang/String;)${asmType.descriptor}", false)
|
||||
v.aconst(asmType)
|
||||
v.swap()
|
||||
v.invokestatic("java/lang/Enum", "valueOf", "(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;", false)
|
||||
v.castIfNeeded(asmType)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user