Skip to content

Commit

Permalink
Bypass instantiating Span-specific visit functions
Browse files Browse the repository at this point in the history
  • Loading branch information
dtolnay committed Mar 9, 2025
1 parent bf0a11d commit 22bd069
Show file tree
Hide file tree
Showing 6 changed files with 28 additions and 10 deletions.
8 changes: 7 additions & 1 deletion codegen/src/fold.rs
Original file line number Diff line number Diff line change
Expand Up @@ -207,9 +207,15 @@ fn node(traits: &mut TokenStream, impls: &mut TokenStream, s: &Node, defs: &Defi
};
}

let traits_body = if s.ident == "Span" {
quote!(i)
} else {
quote!(#fold_fn(self, i))
};

traits.extend(quote! {
fn #fold_fn(&mut self, i: #ty) -> #ty {
#fold_fn(self, i)
#traits_body
}
});

Expand Down
10 changes: 9 additions & 1 deletion codegen/src/visit.rs
Original file line number Diff line number Diff line change
Expand Up @@ -183,9 +183,17 @@ fn node(traits: &mut TokenStream, impls: &mut TokenStream, s: &Node, defs: &Defi
Some(quote!('ast))
};

let traits_body = if s.ident == "Span" {
None
} else {
Some(quote! {
#visit_fn(self, i);
})
};

traits.extend(quote! {
fn #visit_fn(&mut self, i: &#ast_lifetime #ty) {
#visit_fn(self, i);
#traits_body
}
});

Expand Down
10 changes: 9 additions & 1 deletion codegen/src/visit_mut.rs
Original file line number Diff line number Diff line change
Expand Up @@ -186,9 +186,17 @@ fn node(traits: &mut TokenStream, impls: &mut TokenStream, s: &Node, defs: &Defi
}
}

let traits_body = if s.ident == "Span" {
None
} else {
Some(quote! {
#visit_mut_fn(self, i);
})
};

traits.extend(quote! {
fn #visit_mut_fn(&mut self, i: &mut #ty) {
#visit_mut_fn(self, i);
#traits_body
}
});

Expand Down
2 changes: 1 addition & 1 deletion src/gen/fold.rs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 1 addition & 3 deletions src/gen/visit.rs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 1 addition & 3 deletions src/gen/visit_mut.rs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 22bd069

Please sign in to comment.