Skip to content

Commit

Permalink
Apply requested changes
Browse files Browse the repository at this point in the history
  • Loading branch information
escritorio-gustavo committed Jan 30, 2024
1 parent 96a664a commit 7469790
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 24 deletions.
14 changes: 6 additions & 8 deletions macros/src/types/named.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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>(_type_as)?
let parsed_ty = if let Some(ref type_as) = type_as {
syn::parse_str::<Type>(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 {
Expand Down
20 changes: 11 additions & 9 deletions macros/src/types/newtype.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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>(_type_as)?
let inner_ty = if let Some(ref type_as) = type_as {
syn::parse_str::<Type>(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),
};
Expand Down
18 changes: 11 additions & 7 deletions macros/src/types/tuple.rs
Original file line number Diff line number Diff line change
Expand Up @@ -71,32 +71,36 @@ fn format_field(
if skip {
return Ok(());
}
let ty = if let Some(_type_as) = &type_as {
syn::parse_str::<Type>(_type_as)?

let ty = if let Some(ref type_as) = type_as {
syn::parse_str::<Type>(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);
Expand Down

0 comments on commit 7469790

Please sign in to comment.