mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
style: Handle the non-generic path earlier in the derive code.
No need to build the match body if there are no generics. This should hopefully save some work too. Depends on D26289 Differential Revision: https://phabricator.services.mozilla.com/D26290
This commit is contained in:
parent
c3ab3f0963
commit
fc0dad2074
1 changed files with 15 additions and 13 deletions
|
@ -30,6 +30,21 @@ pub fn derive_to_value(
|
|||
// to this token stream, which should be the body of the impl block.
|
||||
non_generic_implementation: impl FnOnce() -> Option<TokenStream>,
|
||||
) -> TokenStream {
|
||||
let name = &input.ident;
|
||||
|
||||
if input.generics.type_params().next().is_none() {
|
||||
if let Some(non_generic_implementation) = non_generic_implementation() {
|
||||
let (impl_generics, ty_generics, where_clause) = input.generics.split_for_impl();
|
||||
return quote! {
|
||||
impl #impl_generics #trait_path for #name #ty_generics
|
||||
#where_clause
|
||||
{
|
||||
#non_generic_implementation
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
let mut where_clause = input.generics.where_clause.take();
|
||||
cg::propagate_clauses_to_output_type(
|
||||
&mut where_clause,
|
||||
|
@ -73,20 +88,7 @@ pub fn derive_to_value(
|
|||
};
|
||||
|
||||
input.generics.where_clause = where_clause;
|
||||
let name = &input.ident;
|
||||
let (impl_generics, ty_generics, where_clause) = input.generics.split_for_impl();
|
||||
if input.generics.type_params().next().is_none() {
|
||||
if let Some(non_generic_implementation) = non_generic_implementation() {
|
||||
return quote! {
|
||||
impl #impl_generics #trait_path for #name #ty_generics
|
||||
#where_clause
|
||||
{
|
||||
#non_generic_implementation
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
let computed_value_type = cg::fmap_trait_output(
|
||||
&input,
|
||||
&trait_path,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue