Consolidate under_name code
diff --git a/codegen/src/fold.rs b/codegen/src/fold.rs
index bb6e37d..e0f49d1 100644
--- a/codegen/src/fold.rs
+++ b/codegen/src/fold.rs
@@ -1,5 +1,4 @@
use crate::{file, full, gen};
-use inflections::Inflect;
use proc_macro2::{Span, TokenStream};
use quote::{quote, TokenStreamExt};
use syn::*;
@@ -13,12 +12,8 @@
fold_impl: TokenStream,
}
-fn under_name(name: &str) -> Ident {
- Ident::new(&name.to_snake_case(), Span::call_site())
-}
-
fn simple_visit(item: &str, name: &TokenStream) -> TokenStream {
- let ident = under_name(item);
+ let ident = gen::under_name(item);
let method = Ident::new(&format!("fold_{}", ident), Span::call_site());
quote! {
_visitor.#method(#name)
@@ -118,7 +113,7 @@
fn node(state: &mut State, s: &types::Node, defs: &types::Definitions) {
let features = visit_features(&s.features);
- let under_name = under_name(&s.ident);
+ let under_name = gen::under_name(&s.ident);
let ty = Ident::new(&s.ident, Span::call_site());
let fold_fn = Ident::new(&format!("fold_{}", under_name), Span::call_site());
diff --git a/codegen/src/gen.rs b/codegen/src/gen.rs
index 30cee0d..fd77d0d 100644
--- a/codegen/src/gen.rs
+++ b/codegen/src/gen.rs
@@ -1,7 +1,13 @@
+use inflections::Inflect;
+use proc_macro2::{Ident, Span};
use syn_codegen as types;
pub const TERMINAL_TYPES: &[&str] = &["Span", "Ident"];
+pub fn under_name(name: &str) -> Ident {
+ Ident::new(&name.to_snake_case(), Span::call_site())
+}
+
pub fn traverse<S, F>(defs: &types::Definitions, node: F) -> S
where
S: Default,
diff --git a/codegen/src/visit.rs b/codegen/src/visit.rs
index 9f85df9..15888d1 100644
--- a/codegen/src/visit.rs
+++ b/codegen/src/visit.rs
@@ -1,6 +1,5 @@
use crate::operand::*;
use crate::{file, full, gen};
-use inflections::Inflect;
use proc_macro2::{Span, TokenStream};
use quote::{quote, TokenStreamExt};
use syn::*;
@@ -14,12 +13,8 @@
visit_impl: TokenStream,
}
-fn under_name(name: &str) -> Ident {
- Ident::new(&name.to_snake_case(), Span::call_site())
-}
-
fn simple_visit(item: &str, name: &Operand) -> TokenStream {
- let ident = under_name(item);
+ let ident = gen::under_name(item);
let method = Ident::new(&format!("visit_{}", ident), Span::call_site());
let name = name.ref_tokens();
quote! {
@@ -134,7 +129,7 @@
fn node(state: &mut State, s: &types::Node, defs: &types::Definitions) {
let features = visit_features(&s.features);
- let under_name = under_name(&s.ident);
+ let under_name = gen::under_name(&s.ident);
let ty = Ident::new(&s.ident, Span::call_site());
let visit_fn = Ident::new(&format!("visit_{}", under_name), Span::call_site());
diff --git a/codegen/src/visit_mut.rs b/codegen/src/visit_mut.rs
index 850ba56..b2e853e 100644
--- a/codegen/src/visit_mut.rs
+++ b/codegen/src/visit_mut.rs
@@ -1,6 +1,5 @@
use crate::operand::*;
use crate::{file, full, gen};
-use inflections::Inflect;
use proc_macro2::{Span, TokenStream};
use quote::{quote, TokenStreamExt};
use syn::*;
@@ -14,12 +13,8 @@
visit_mut_impl: TokenStream,
}
-fn under_name(name: &str) -> Ident {
- Ident::new(&name.to_snake_case(), Span::call_site())
-}
-
fn simple_visit(item: &str, name: &Operand) -> TokenStream {
- let ident = under_name(item);
+ let ident = gen::under_name(item);
let method = Ident::new(&format!("visit_{}_mut", ident), Span::call_site());
let name = name.ref_mut_tokens();
quote! {
@@ -134,7 +129,7 @@
fn node(state: &mut State, s: &types::Node, defs: &types::Definitions) {
let features = visit_features(&s.features);
- let under_name = under_name(&s.ident);
+ let under_name = gen::under_name(&s.ident);
let ty = Ident::new(&s.ident, Span::call_site());
let visit_mut_fn = Ident::new(&format!("visit_{}_mut", under_name), Span::call_site());