Merge pull request #134 from ephraimkunz/clippy-warnings-and-build

Fix clippy warnings and build with heck 0.4
This commit is contained in:
Marc-Antoine ARNAUD 2022-03-25 10:04:53 +01:00 committed by GitHub
commit 71432d1e9b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 46 additions and 59 deletions

View File

@ -474,10 +474,7 @@ fn struct_default_namespace_no_prefix() {
init(); init();
#[derive(Debug, PartialEq, YaDeserialize, YaSerialize)] #[derive(Debug, PartialEq, YaDeserialize, YaSerialize)]
#[yaserde( #[yaserde(rename = "book", namespace = "http://www.sample.com/ns/domain")]
rename = "book",
namespace = "http://www.sample.com/ns/domain"
)]
pub struct Book { pub struct Book {
author: String, author: String,
title: String, title: String,

View File

@ -21,7 +21,7 @@ fn get_value(iter: &mut IntoIter) -> Option<String> {
(iter.next(), iter.next()) (iter.next(), iter.next())
{ {
if operator.as_char() == '=' { if operator.as_char() == '=' {
Some(value.to_string().replace("\"", "")) Some(value.to_string().replace('"', ""))
} else { } else {
None None
} }
@ -138,14 +138,13 @@ impl YaSerdeAttribute {
let namespaces_matches: TokenStream = self let namespaces_matches: TokenStream = self
.namespaces .namespaces
.iter() .iter()
.map(|(prefix, namespace)| { .filter_map(|(prefix, namespace)| {
if configured_prefix.eq(prefix) { if configured_prefix.eq(prefix) {
Some(quote!(#namespace => {})) Some(quote!(#namespace => {}))
} else { } else {
None None
} }
}) })
.flatten()
.collect(); .collect();
quote!( quote!(
@ -316,7 +315,10 @@ fn parse_attributes_with_values() {
let attrs = YaSerdeAttribute::parse(&attributes); let attrs = YaSerdeAttribute::parse(&attributes);
let mut namespaces = BTreeMap::new(); let mut namespaces = BTreeMap::new();
namespaces.insert(Some("example".to_string()), "http://example.org".to_string()); namespaces.insert(
Some("example".to_string()),
"http://example.org".to_string(),
);
assert_eq!( assert_eq!(
YaSerdeAttribute { YaSerdeAttribute {

View File

@ -1,5 +1,5 @@
use crate::common::attribute::YaSerdeAttribute; use crate::common::attribute::YaSerdeAttribute;
use heck::CamelCase; use heck::ToUpperCamelCase;
use proc_macro2::Span; use proc_macro2::Span;
use proc_macro2::{Ident, TokenStream}; use proc_macro2::{Ident, TokenStream};
use quote::{format_ident, quote}; use quote::{format_ident, quote};
@ -89,7 +89,7 @@ impl YaSerdeField {
Ident::new( Ident::new(
&format!( &format!(
"__Visitor_{}_{}", "__Visitor_{}_{}",
label.replace(".", "_").to_camel_case(), label.replace('.', "_").to_upper_camel_case(),
struct_id struct_id
), ),
self.get_span(), self.get_span(),
@ -109,7 +109,7 @@ impl YaSerdeField {
.attributes .attributes
.default .default
.as_ref() .as_ref()
.map(|default| Ident::new(&default, self.get_span())) .map(|default| Ident::new(default, self.get_span()))
} }
pub fn get_skip_serializing_if_function(&self) -> Option<Ident> { pub fn get_skip_serializing_if_function(&self) -> Option<Ident> {
@ -117,7 +117,7 @@ impl YaSerdeField {
.attributes .attributes
.skip_serializing_if .skip_serializing_if
.as_ref() .as_ref()
.map(|skip_serializing_if| Ident::new(&skip_serializing_if, self.get_span())) .map(|skip_serializing_if| Ident::new(skip_serializing_if, self.get_span()))
} }
pub fn get_namespace_matching( pub fn get_namespace_matching(

View File

@ -19,8 +19,7 @@ pub fn parse(
let match_to_enum: TokenStream = data_enum let match_to_enum: TokenStream = data_enum
.variants .variants
.iter() .iter()
.map(|variant| parse_variant(variant, name)) .filter_map(|variant| parse_variant(variant, name))
.flatten()
.collect(); .collect();
let flatten = root_attributes.flatten; let flatten = root_attributes.flatten;
@ -218,7 +217,7 @@ fn build_unnamed_visitor_calls(
.iter() .iter()
.map(|field| YaSerdeField::new(field.clone())) .map(|field| YaSerdeField::new(field.clone()))
.enumerate() .enumerate()
.map(|(idx, field)| { .filter_map(|(idx, field)| {
let visitor_label = Ident::new(&format!("__Visitor_{}", idx), field.get_span()); let visitor_label = Ident::new(&format!("__Visitor_{}", idx), field.get_span());
let call_simple_type_visitor = |simple_type: Field, action| { let call_simple_type_visitor = |simple_type: Field, action| {
@ -302,6 +301,5 @@ fn build_unnamed_visitor_calls(
simple_type => call_simple_type_visitor(simple_type, set_val), simple_type => call_simple_type_visitor(simple_type, set_val),
} }
}) })
.flatten()
.collect() .collect()
} }

View File

@ -1,6 +1,6 @@
use crate::common::{Field, YaSerdeAttribute, YaSerdeField}; use crate::common::{Field, YaSerdeAttribute, YaSerdeField};
use crate::de::build_default_value::build_default_value; use crate::de::build_default_value::build_default_value;
use heck::CamelCase; use heck::ToUpperCamelCase;
use proc_macro2::{Span, TokenStream}; use proc_macro2::{Span, TokenStream};
use quote::quote; use quote::quote;
use syn::{DataStruct, Ident}; use syn::{DataStruct, Ident};
@ -22,7 +22,7 @@ pub fn parse(
.fields .fields
.iter() .iter()
.map(|field| YaSerdeField::new(field.clone())) .map(|field| YaSerdeField::new(field.clone()))
.map(|field| match field.get_type() { .filter_map(|field| match field.get_type() {
Field::FieldStruct { struct_name } => build_default_value( Field::FieldStruct { struct_name } => build_default_value(
&field, &field,
Some(quote!(#struct_name)), Some(quote!(#struct_name)),
@ -57,14 +57,13 @@ pub fn parse(
build_default_value(&field, Some(type_token), value_builder) build_default_value(&field, Some(type_token), value_builder)
} }
}) })
.flatten()
.collect(); .collect();
let field_visitors: TokenStream = data_struct let field_visitors: TokenStream = data_struct
.fields .fields
.iter() .iter()
.map(|field| YaSerdeField::new(field.clone())) .map(|field| YaSerdeField::new(field.clone()))
.map(|field| { .filter_map(|field| {
let struct_visitor = |struct_name: syn::Path| { let struct_visitor = |struct_name: syn::Path| {
let struct_id: String = struct_name let struct_id: String = struct_name
.segments .segments
@ -137,7 +136,6 @@ pub fn parse(
simple_type => simple_type_visitor(simple_type), simple_type => simple_type_visitor(simple_type),
} }
}) })
.flatten()
.collect(); .collect();
let call_visitors: TokenStream = data_struct let call_visitors: TokenStream = data_struct
@ -145,7 +143,7 @@ pub fn parse(
.iter() .iter()
.map(|field| YaSerdeField::new(field.clone())) .map(|field| YaSerdeField::new(field.clone()))
.filter(|field| !field.is_attribute() || !field.is_flatten()) .filter(|field| !field.is_attribute() || !field.is_flatten())
.map(|field| { .filter_map(|field| {
let value_label = field.get_value_label(); let value_label = field.get_value_label();
let label_name = field.renamed_label_without_namespace(); let label_name = field.renamed_label_without_namespace();
@ -175,7 +173,7 @@ pub fn parse(
&field_visitor, &field_visitor,
&action, &action,
&field, &field,
&root_attributes, root_attributes,
) )
}; };
@ -194,7 +192,6 @@ pub fn parse(
simple_type => visit_simple(simple_type, quote! { = value }), simple_type => visit_simple(simple_type, quote! { = value }),
} }
}) })
.flatten()
.collect(); .collect();
let call_flatten_visitors: TokenStream = data_struct let call_flatten_visitors: TokenStream = data_struct
@ -202,7 +199,7 @@ pub fn parse(
.iter() .iter()
.map(|field| YaSerdeField::new(field.clone())) .map(|field| YaSerdeField::new(field.clone()))
.filter(|field| !field.is_attribute() && field.is_flatten()) .filter(|field| !field.is_attribute() && field.is_flatten())
.map(|field| { .filter_map(|field| {
let value_label = field.get_value_label(); let value_label = field.get_value_label();
match field.get_type() { match field.get_type() {
@ -218,7 +215,6 @@ pub fn parse(
field_type => unimplemented!(r#""flatten" is not implemented for {:?}"#, field_type), field_type => unimplemented!(r#""flatten" is not implemented for {:?}"#, field_type),
} }
}) })
.flatten()
.collect(); .collect();
let attributes_loading: TokenStream = data_struct let attributes_loading: TokenStream = data_struct
@ -226,7 +222,7 @@ pub fn parse(
.iter() .iter()
.map(|field| YaSerdeField::new(field.clone())) .map(|field| YaSerdeField::new(field.clone()))
.filter(|field| field.is_attribute()) .filter(|field| field.is_attribute())
.map(|field| { .filter_map(|field| {
let label = field.get_value_label(); let label = field.get_value_label();
let label_name = field.renamed_label_without_namespace(); let label_name = field.renamed_label_without_namespace();
let visitor_label = build_visitor_ident(&label_name, field.get_span(), None); let visitor_label = build_visitor_ident(&label_name, field.get_span(), None);
@ -285,14 +281,13 @@ pub fn parse(
simple_type => visit_simple(simple_type, quote! { = value }), simple_type => visit_simple(simple_type, quote! { = value }),
} }
}) })
.flatten()
.collect(); .collect();
let set_text: TokenStream = data_struct let set_text: TokenStream = data_struct
.fields .fields
.iter() .iter()
.map(|field| YaSerdeField::new(field.clone())) .map(|field| YaSerdeField::new(field.clone()))
.map(|field| { .filter_map(|field| {
let label = field.get_value_label(); let label = field.get_value_label();
let set_text = |action: &TokenStream| { let set_text = |action: &TokenStream| {
@ -318,7 +313,6 @@ pub fn parse(
} }
} }
}) })
.flatten()
.collect(); .collect();
let struct_builder: TokenStream = data_struct let struct_builder: TokenStream = data_struct
@ -489,7 +483,7 @@ fn build_visitor_ident(label: &str, span: Span, struct_name: Option<&syn::Path>)
Ident::new( Ident::new(
&format!( &format!(
"__Visitor_{}_{}", "__Visitor_{}_{}",
label.replace(".", "_").to_camel_case(), label.replace('.', "_").to_upper_camel_case(),
struct_id struct_id
), ),
span, span,

View File

@ -37,22 +37,22 @@ fn inner_enum_inspector(
let variant_attrs = YaSerdeAttribute::parse(&variant.attrs); let variant_attrs = YaSerdeAttribute::parse(&variant.attrs);
let label = &variant.ident; let label = &variant.ident;
let label_name = build_label_name(&label, &variant_attrs, &root_attributes.default_namespace); let label_name = build_label_name(label, &variant_attrs, &root_attributes.default_namespace);
match variant.fields { match variant.fields {
Fields::Unit => Some(quote! { Fields::Unit => quote! {
&#name::#label => { &#name::#label => {
let data_event = ::yaserde::__xml::writer::XmlEvent::characters(#label_name); let data_event = ::yaserde::__xml::writer::XmlEvent::characters(#label_name);
writer.write(data_event).map_err(|e| e.to_string())?; writer.write(data_event).map_err(|e| e.to_string())?;
} }
}), },
Fields::Named(ref fields) => { Fields::Named(ref fields) => {
let enum_fields: TokenStream = fields let enum_fields: TokenStream = fields
.named .named
.iter() .iter()
.map(|field| YaSerdeField::new(field.clone())) .map(|field| YaSerdeField::new(field.clone()))
.filter(|field| !field.is_attribute()) .filter(|field| !field.is_attribute())
.map(|field| { .filter_map(|field| {
let field_label = field.label(); let field_label = field.label();
if field.is_text_content() { if field.is_text_content() {
@ -124,14 +124,13 @@ fn inner_enum_inspector(
Field::FieldOption { .. } => None, Field::FieldOption { .. } => None,
} }
}) })
.flatten()
.collect(); .collect();
Some(quote! { quote! {
&#name::#label{..} => { &#name::#label{..} => {
#enum_fields #enum_fields
} }
}) }
} }
Fields::Unnamed(ref fields) => { Fields::Unnamed(ref fields) => {
let enum_fields: TokenStream = fields let enum_fields: TokenStream = fields
@ -191,37 +190,35 @@ fn inner_enum_inspector(
Field::FieldOption { data_type } => { Field::FieldOption { data_type } => {
let write = write_sub_type(*data_type); let write = write_sub_type(*data_type);
Some(match_field(&quote! { match_field(&quote! {
if let ::std::option::Option::Some(item) = item { if let ::std::option::Option::Some(item) = item {
#write #write
} }
})) })
} }
Field::FieldVec { data_type } => { Field::FieldVec { data_type } => {
let write = write_sub_type(*data_type); let write = write_sub_type(*data_type);
Some(match_field(&quote! { match_field(&quote! {
for item in item { for item in item {
#write #write
} }
})) })
} }
Field::FieldStruct { .. } => Some(write_element(&match_field(&serialize))), Field::FieldStruct { .. } => write_element(&match_field(&serialize)),
Field::FieldString => Some(match_field(&write_element(&write_string_chars))), Field::FieldString => match_field(&write_element(&write_string_chars)),
_simple_type => Some(match_field(&write_simple_type)), _simple_type => match_field(&write_simple_type),
} }
}) })
.flatten()
.collect(); .collect();
Some(quote! { quote! {
&#name::#label{..} => { &#name::#label{..} => {
#enum_fields #enum_fields
} }
}) }
} }
} }
}) })
.flatten()
.collect() .collect()
} }

View File

@ -142,7 +142,7 @@ pub fn serialize(
.iter() .iter()
.map(|field| YaSerdeField::new(field.clone())) .map(|field| YaSerdeField::new(field.clone()))
.filter(|field| !field.is_attribute()) .filter(|field| !field.is_attribute())
.map(|field| { .filter_map(|field| {
let label = field.label(); let label = field.label();
if field.is_text_content() { if field.is_text_content() {
return match field.get_type() { return match field.get_type() {
@ -324,7 +324,6 @@ pub fn serialize(
}, },
} }
}) })
.flatten()
.collect(); .collect();
implement_serializer( implement_serializer(

View File

@ -8,14 +8,14 @@ pub fn generate_namespaces_definition(attributes: &YaSerdeAttribute) -> TokenStr
.iter() .iter()
.map(|(prefix, namespace)| { .map(|(prefix, namespace)| {
if attributes.default_namespace.eq(prefix) { if attributes.default_namespace.eq(prefix) {
return Some(quote!( quote!(
.default_ns(#namespace) .default_ns(#namespace)
)); )
} } else {
Some(quote!( quote!(
.ns(#prefix, #namespace) .ns(#prefix, #namespace)
)) )
}
}) })
.flatten()
.collect() .collect()
} }