Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c06cfc35 authored by Andrei Homescu's avatar Andrei Homescu
Browse files

rust: Fix Debug implementation for declare_binder_enum!

Debug for Rust enums prints the variant name, while the
derived implementation from declare_binder_enum! previously
used the structure format since our AIDL enums are newtypes
over integers. The output looked something like Foo(0).
This replaces the derived Debug with a custom implementation
that prints the variant name just like Debug for Rust enums.

Test: atest rustBinderTest
Change-Id: I03597afa50918dc7a45a5c9fe288aad6dd159fb5
parent 8d8caa17
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -1091,7 +1091,7 @@ macro_rules! declare_binder_enum {
        }
    } => {
        $( #[$attr] )*
        #[derive(Debug, Default, Copy, Clone, PartialOrd, Ord, PartialEq, Eq, Hash)]
        #[derive(Default, Copy, Clone, PartialOrd, Ord, PartialEq, Eq, Hash)]
        #[allow(missing_docs)]
        pub struct $enum(pub $backing);
        impl $enum {
@@ -1104,6 +1104,15 @@ macro_rules! declare_binder_enum {
            }
        }

        impl std::fmt::Debug for $enum {
            fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
                match self.0 {
                    $($value => f.write_str(stringify!($name)),)*
                    _ => f.write_fmt(format_args!("{}", self.0))
                }
            }
        }

        impl $crate::binder_impl::Serialize for $enum {
            fn serialize(&self, parcel: &mut $crate::binder_impl::BorrowedParcel<'_>) -> std::result::Result<(), $crate::StatusCode> {
                parcel.write(&self.0)