From 7469790a82f7fdc942357b625b377e18c7c40c6b Mon Sep 17 00:00:00 2001 From: Gustavo Date: Tue, 30 Jan 2024 10:57:24 -0300 Subject: [PATCH] Apply requested changes --- macros/src/types/named.rs | 14 ++++++-------- macros/src/types/newtype.rs | 20 +++++++++++--------- macros/src/types/tuple.rs | 18 +++++++++++------- 3 files changed, 28 insertions(+), 24 deletions(-) diff --git a/macros/src/types/named.rs b/macros/src/types/named.rs index d6e698bed..8145f7578 100644 --- a/macros/src/types/named.rs +++ b/macros/src/types/named.rs @@ -92,21 +92,19 @@ fn format_field( return Ok(()); } - if let (Some(_type_as), Some(_type_override)) = (&type_as, &type_override) { + if type_as.is_some() && type_override.is_some() { syn_err!("`type` is not compatible with `as`") } - let parsed_ty = if let Some(_type_as) = &type_as { - syn::parse_str::(_type_as)? + let parsed_ty = if let Some(ref type_as) = type_as { + syn::parse_str::(type_as)? } else { field.ty.clone() }; - let (ty, optional_annotation) = { - match optional { - true => (extract_option_argument(&parsed_ty)?, "?"), - false => (&parsed_ty, ""), - } + let (ty, optional_annotation) = match optional { + true => (extract_option_argument(&parsed_ty)?, "?"), + false => (&parsed_ty, ""), }; if flatten { diff --git a/macros/src/types/newtype.rs b/macros/src/types/newtype.rs index 3753cae30..a51ee45a1 100644 --- a/macros/src/types/newtype.rs +++ b/macros/src/types/newtype.rs @@ -39,24 +39,26 @@ pub(crate) fn newtype( _ => {} }; - if let (Some(_type_as), Some(_type_override)) = (&type_as, &type_override) { + if type_as.is_some() && type_override.is_some() { syn_err!("`type` is not compatible with `as`") } - let inner_ty = if let Some(_type_as) = &type_as { - syn::parse_str::(_type_as)? + let inner_ty = if let Some(ref type_as) = type_as { + syn::parse_str::(type_as)? } else { inner.ty.clone() }; let mut dependencies = Dependencies::default(); - match (inline, &type_override) { - (_, Some(_)) => (), - (true, _) => dependencies.append_from(&inner_ty), - (false, _) => dependencies.push_or_append_from(&inner_ty), + + match (type_override.is_none(), inline) { + (false, _) => (), + (true, true) => dependencies.append_from(&inner_ty), + (true, false) => dependencies.push_or_append_from(&inner_ty), }; - let inline_def = match &type_override { - Some(o) => quote!(#o.to_owned()), + + let inline_def = match type_override { + Some(ref o) => quote!(#o.to_owned()), None if inline => quote!(<#inner_ty as ts_rs::TS>::inline()), None => format_type(&inner_ty, &mut dependencies, generics), }; diff --git a/macros/src/types/tuple.rs b/macros/src/types/tuple.rs index eff6cc61a..2704f0a4e 100644 --- a/macros/src/types/tuple.rs +++ b/macros/src/types/tuple.rs @@ -71,32 +71,36 @@ fn format_field( if skip { return Ok(()); } - - let ty = if let Some(_type_as) = &type_as { - syn::parse_str::(_type_as)? + + let ty = if let Some(ref type_as) = type_as { + syn::parse_str::(type_as)? } else { field.ty.clone() }; - if let (Some(_type_as), Some(_type_override)) = (&type_as, &type_override) { + + if type_as.is_some() && type_override.is_some() { syn_err!("`type` is not compatible with `as`") } + if rename.is_some() { syn_err!("`rename` is not applicable to tuple structs") } + if optional { syn_err!("`optional` is not applicable to tuple fields") } + if flatten { syn_err!("`flatten` is not applicable to tuple fields") } - formatted_fields.push(match &type_override { - Some(o) => quote!(#o.to_owned()), + formatted_fields.push(match type_override { + Some(ref o) => quote!(#o.to_owned()), None if inline => quote!(<#ty as ts_rs::TS>::inline()), None => format_type(&ty, dependencies, generics), }); - match (inline, &type_override) { + match (inline, type_override) { (_, Some(_)) => (), (false, _) => { dependencies.push_or_append_from(&ty);