Omit missing content fallthrough arm if not needed

This commit is contained in:
David Tolnay
2020-05-09 20:55:18 -07:00
parent 172edc4cf4
commit 9476838264
+10 -4
View File
@@ -1377,7 +1377,8 @@ fn deserialize_adjacently_tagged_enum(
} }
}; };
let arms = variants let mut missing_content_fallthrough = quote!();
let missing_content_arms = variants
.iter() .iter()
.enumerate() .enumerate()
.filter(|&(_, variant)| !variant.attrs.skip_deserializing()) .filter(|&(_, variant)| !variant.attrs.skip_deserializing())
@@ -1396,7 +1397,12 @@ fn deserialize_adjacently_tagged_enum(
#func(#content).map(#this::#variant_ident) #func(#content).map(#this::#variant_ident)
} }
} }
_ => return None, _ => {
missing_content_fallthrough = quote! {
_ => _serde::export::Err(<__A::Error as _serde::de::Error>::missing_field(#content))
};
return None;
}
}; };
Some(quote! { Some(quote! {
__Field::#variant_index => #arm, __Field::#variant_index => #arm,
@@ -1404,8 +1410,8 @@ fn deserialize_adjacently_tagged_enum(
}); });
let missing_content = quote! { let missing_content = quote! {
match __field { match __field {
#(#arms)* #(#missing_content_arms)*
_ => _serde::export::Err(<__A::Error as _serde::de::Error>::missing_field(#content)) #missing_content_fallthrough
} }
}; };