diff --git a/macro/src/derive.rs b/macro/src/derive.rs index 2109a1f6..22c05ccc 100644 --- a/macro/src/derive.rs +++ b/macro/src/derive.rs @@ -17,7 +17,7 @@ pub fn expand_struct(strct: &Struct) -> TokenStream { expanded } -pub fn expand_enum(enm: &Enum) -> TokenStream { +pub fn expand_enum(enm: &Enum, actual_derives: &mut Option) -> TokenStream { let mut expanded = TokenStream::new(); let mut has_copy = false; let mut has_clone = false; @@ -45,6 +45,12 @@ pub fn expand_enum(enm: &Enum) -> TokenStream { expanded.extend(enum_clone(enm, span)); } + *actual_derives = Some(quote! { + // Required to be derived in order for the enum's "variants" to be + // usable in patterns. + #[derive(::std::cmp::PartialEq, ::std::cmp::Eq)] + }); + expanded } diff --git a/macro/src/expand.rs b/macro/src/expand.rs index 29178208..cc551016 100644 --- a/macro/src/expand.rs +++ b/macro/src/expand.rs @@ -164,12 +164,8 @@ fn expand_enum(enm: &Enum) -> TokenStream { pub const #variant_ident: Self = #ident { repr: #discriminant }; }) }); - let derives = quote! { - // Required to be derived in order for the enum's "variants" to be - // usable in patterns. - #[derive(::std::cmp::PartialEq, ::std::cmp::Eq)] - }; - let derived_traits = derive::expand_enum(enm); + let mut derives = None; + let derived_traits = derive::expand_enum(enm, &mut derives); quote! { #doc