Factor out full macro
diff --git a/codegen/src/fold.rs b/codegen/src/fold.rs
index 3122473..3bc0036 100644
--- a/codegen/src/fold.rs
+++ b/codegen/src/fold.rs
@@ -1,4 +1,4 @@
-use crate::file;
+use crate::{file, full};
use quote::quote;
use syn_codegen as types;
@@ -328,22 +328,7 @@
codegen::generate(&mut state, &s, defs);
}
- let full_macro = quote! {
- #[cfg(feature = "full")]
- macro_rules! full {
- ($e:expr) => {
- $e
- };
- }
-
- #[cfg(all(feature = "derive", not(feature = "full")))]
- macro_rules! full {
- ($e:expr) => {
- unreachable!()
- };
- }
- };
-
+ let full_macro = full::get_macro();
let fold_trait = state.fold_trait;
let fold_impl = state.fold_impl;
file::write(
diff --git a/codegen/src/full.rs b/codegen/src/full.rs
new file mode 100644
index 0000000..a410031
--- /dev/null
+++ b/codegen/src/full.rs
@@ -0,0 +1,20 @@
+use proc_macro2::TokenStream;
+use quote::quote;
+
+pub fn get_macro() -> TokenStream {
+ quote! {
+ #[cfg(feature = "full")]
+ macro_rules! full {
+ ($e:expr) => {
+ $e
+ };
+ }
+
+ #[cfg(all(feature = "derive", not(feature = "full")))]
+ macro_rules! full {
+ ($e:expr) => {
+ unreachable!()
+ };
+ }
+ }
+}
diff --git a/codegen/src/main.rs b/codegen/src/main.rs
index 8fd5cf9..d80782b 100644
--- a/codegen/src/main.rs
+++ b/codegen/src/main.rs
@@ -14,6 +14,7 @@
mod file;
mod fold;
+mod full;
mod json;
mod parse;
mod version;
diff --git a/codegen/src/visit.rs b/codegen/src/visit.rs
index c13e95d..b16130e 100644
--- a/codegen/src/visit.rs
+++ b/codegen/src/visit.rs
@@ -1,4 +1,4 @@
-use crate::file;
+use crate::{file, full};
use quote::quote;
use syn_codegen as types;
@@ -329,29 +329,7 @@
codegen::generate(&mut state, &s, defs);
}
- let full_macro = quote! {
- #[cfg(feature = "full")]
- macro_rules! full {
- ($e:expr) => {
- $e
- };
- }
-
- #[cfg(all(feature = "derive", not(feature = "full")))]
- macro_rules! full {
- ($e:expr) => {
- unreachable!()
- };
- }
- };
-
- let skip_macro = quote! {
- #[cfg(any(feature = "full", feature = "derive"))]
- macro_rules! skip {
- ($($tt:tt)*) => {};
- }
- };
-
+ let full_macro = full::get_macro();
let visit_trait = state.visit_trait;
let visit_impl = state.visit_impl;
file::write(
@@ -367,7 +345,11 @@
use gen::helper::visit::*;
#full_macro
- #skip_macro
+
+ #[cfg(any(feature = "full", feature = "derive"))]
+ macro_rules! skip {
+ ($($tt:tt)*) => {};
+ }
/// Syntax tree traversal to walk a shared borrow of a syntax tree.
///
diff --git a/codegen/src/visit_mut.rs b/codegen/src/visit_mut.rs
index f293765..9ac6ebf 100644
--- a/codegen/src/visit_mut.rs
+++ b/codegen/src/visit_mut.rs
@@ -1,4 +1,4 @@
-use crate::file;
+use crate::{file, full};
use quote::quote;
use syn_codegen as types;
@@ -329,29 +329,7 @@
codegen::generate(&mut state, &s, defs);
}
- let full_macro = quote! {
- #[cfg(feature = "full")]
- macro_rules! full {
- ($e:expr) => {
- $e
- };
- }
-
- #[cfg(all(feature = "derive", not(feature = "full")))]
- macro_rules! full {
- ($e:expr) => {
- unreachable!()
- };
- }
- };
-
- let skip_macro = quote! {
- #[cfg(any(feature = "full", feature = "derive"))]
- macro_rules! skip {
- ($($tt:tt)*) => {};
- }
- };
-
+ let full_macro = full::get_macro();
let visit_mut_trait = state.visit_mut_trait;
let visit_mut_impl = state.visit_mut_impl;
file::write(
@@ -365,7 +343,11 @@
use gen::helper::visit_mut::*;
#full_macro
- #skip_macro
+
+ #[cfg(any(feature = "full", feature = "derive"))]
+ macro_rules! skip {
+ ($($tt:tt)*) => {};
+ }
/// Syntax tree traversal to mutate an exclusive borrow of a syntax tree in
/// place.