From 28d67f4172268c8e9b6a291d8338afda41163249 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Sat, 24 Dec 2016 13:10:06 -0500 Subject: [PATCH] Format variant-skip message only if variant is skipped --- serde_codegen/src/ser.rs | 34 ++++++++++++---------------------- 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/serde_codegen/src/ser.rs b/serde_codegen/src/ser.rs index e9eb38f4..65459abc 100644 --- a/serde_codegen/src/ser.rs +++ b/serde_codegen/src/ser.rs @@ -256,29 +256,19 @@ fn serialize_variant( let variant_ident = variant.ident.clone(); let variant_name = variant.attrs.name().serialize_name(); - let skipped_msg = format!("The enum variant {}::{} cannot be serialized", - type_ident, variant_ident); - let skipped_err = quote! { - Err(_serde::ser::Error::invalid_value(#skipped_msg)) - }; - if variant.attrs.skip_serializing() { - match variant.style { - Style::Unit => { - quote! { - #type_ident::#variant_ident => #skipped_err, - } - }, - Style::Newtype | Style::Tuple => { - quote! { - #type_ident::#variant_ident(..) => #skipped_err, - } - }, - Style::Struct => { - quote! { - #type_ident::#variant_ident{..} => #skipped_err, - } - } + let skipped_msg = format!("The enum variant {}::{} cannot be serialized", + type_ident, variant_ident); + let skipped_err = quote! { + Err(_serde::ser::Error::invalid_value(#skipped_msg)) + }; + let fields_pat = match variant.style { + Style::Unit => quote!(), + Style::Newtype | Style::Tuple => quote!( (..) ), + Style::Struct => quote!( {..} ), + }; + quote! { + #type_ident::#variant_ident #fields_pat => #skipped_err, } } else { // variant wasn't skipped match variant.style {