Remove codegen State types
diff --git a/codegen/src/gen.rs b/codegen/src/gen.rs
index fd77d0d..62de202 100644
--- a/codegen/src/gen.rs
+++ b/codegen/src/gen.rs
@@ -1,6 +1,6 @@
use inflections::Inflect;
-use proc_macro2::{Ident, Span};
-use syn_codegen as types;
+use proc_macro2::{Ident, Span, TokenStream};
+use syn_codegen::{Data, Features, Definitions, Node};
pub const TERMINAL_TYPES: &[&str] = &["Span", "Ident"];
@@ -8,22 +8,22 @@
Ident::new(&name.to_snake_case(), Span::call_site())
}
-pub fn traverse<S, F>(defs: &types::Definitions, node: F) -> S
-where
- S: Default,
- F: Fn(&mut S, &types::Node, &types::Definitions),
-{
- let mut state = S::default();
+pub fn traverse(
+ defs: &Definitions,
+ node: fn(&mut TokenStream, &mut TokenStream, &Node, &Definitions),
+) -> (TokenStream, TokenStream) {
+ let mut traits = TokenStream::new();
+ let mut impls = TokenStream::new();
for s in &defs.types {
- node(&mut state, s, defs);
+ node(&mut traits, &mut impls, s, defs);
}
for tt in TERMINAL_TYPES {
- let s = types::Node {
+ let s = Node {
ident: tt.to_string(),
- features: types::Features::default(),
- data: types::Data::Private,
+ features: Features::default(),
+ data: Data::Private,
};
- node(&mut state, &s, defs);
+ node(&mut traits, &mut impls, &s, defs);
}
- state
+ (traits, impls)
}