From bfe3f7f75570540fa184a133653d16e86f22667a Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Sun, 31 Mar 2019 18:47:57 +0200 Subject: rustfmt --- dhall_generator/src/dhall_type.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'dhall_generator/src/dhall_type.rs') diff --git a/dhall_generator/src/dhall_type.rs b/dhall_generator/src/dhall_type.rs index ac8eb4e..270c27c 100644 --- a/dhall_generator/src/dhall_type.rs +++ b/dhall_generator/src/dhall_type.rs @@ -168,9 +168,7 @@ pub fn derive_type_inner( // Ensure that all the fields have a Type impl let mut where_clause = orig_where_clause.clone(); for ty in constraints.iter() { - where_clause - .predicates - .push(parse_quote!(#ty: dhall::Type)); + where_clause.predicates.push(parse_quote!(#ty: dhall::Type)); } let ident = &input.ident; -- cgit v1.2.3 From 7374d0524ccd53b256107667b213597c05720d2d Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Sun, 31 Mar 2019 19:08:08 +0200 Subject: Move recursion out of Expr --- dhall_generator/src/dhall_type.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'dhall_generator/src/dhall_type.rs') diff --git a/dhall_generator/src/dhall_type.rs b/dhall_generator/src/dhall_type.rs index 270c27c..876d261 100644 --- a/dhall_generator/src/dhall_type.rs +++ b/dhall_generator/src/dhall_type.rs @@ -48,7 +48,7 @@ pub fn derive_for_struct( ); } }); - Ok(quote! { dhall_core::rc(dhall_core::Expr::RecordType({ + Ok(quote! { dhall_core::rc(dhall_core::ExprF::RecordType({ use std::collections::BTreeMap; let mut m = BTreeMap::new(); #(#fields)* @@ -101,7 +101,7 @@ pub fn derive_for_enum( }) .collect::, Error>>()?; - Ok(quote! { dhall_core::rc(dhall_core::Expr::UnionType({ + Ok(quote! { dhall_core::rc(dhall_core::ExprF::UnionType({ use std::collections::BTreeMap; let mut m = BTreeMap::new(); #(#variants)* -- cgit v1.2.3 From c4fe2f4290089437d3ff1d6d15df58b4cf29a11e Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Sun, 31 Mar 2019 20:38:04 +0200 Subject: Make quoting generic --- dhall_generator/src/dhall_type.rs | 46 +++++++++++++++------------------------ 1 file changed, 17 insertions(+), 29 deletions(-) (limited to 'dhall_generator/src/dhall_type.rs') diff --git a/dhall_generator/src/dhall_type.rs b/dhall_generator/src/dhall_type.rs index 876d261..ec023bc 100644 --- a/dhall_generator/src/dhall_type.rs +++ b/dhall_generator/src/dhall_type.rs @@ -39,21 +39,17 @@ pub fn derive_for_struct( .collect(), syn::Fields::Unit => vec![], }; - let fields = fields.into_iter().map(|(name, ty)| { - constraints.push(ty.clone()); - quote! { - m.insert( - dhall_core::Label::from(#name), - <#ty as dhall::Type>::get_type() - ); - } - }); - Ok(quote! { dhall_core::rc(dhall_core::ExprF::RecordType({ - use std::collections::BTreeMap; - let mut m = BTreeMap::new(); - #(#fields)* - m - })) }) + let fields = fields + .into_iter() + .map(|(name, ty)| { + let name = dhall_core::Label::from(name); + constraints.push(ty.clone()); + (name, quote!(<#ty as dhall::Type>::get_type())) + }) + .collect(); + let record = + crate::dhall_expr::quote_expr(dhall_core::ExprF::RecordType(fields)); + Ok(quote! { dhall_core::rc(#record) }) } pub fn derive_for_enum( @@ -64,7 +60,7 @@ pub fn derive_for_enum( .variants .iter() .map(|v| { - let name = v.ident.to_string(); + let name = dhall_core::Label::from(v.ident.to_string()); let ty = match &v.fields { syn::Fields::Unnamed(fields) if fields.unnamed.is_empty() => { Err(Error::new( @@ -92,21 +88,13 @@ pub fn derive_for_enum( }; let ty = ty?; constraints.push(ty.clone()); - Ok(quote! { - m.insert( - dhall_core::Label::from(#name), - <#ty as dhall::Type>::get_type() - ); - }) + Ok((name, quote!(<#ty as dhall::Type>::get_type()))) }) - .collect::, Error>>()?; + .collect::>()?; - Ok(quote! { dhall_core::rc(dhall_core::ExprF::UnionType({ - use std::collections::BTreeMap; - let mut m = BTreeMap::new(); - #(#variants)* - m - })) }) + let union = + crate::dhall_expr::quote_expr(dhall_core::ExprF::UnionType(variants)); + Ok(quote! { dhall_core::rc(#union) }) } pub fn derive_type_inner( -- cgit v1.2.3