Move tokenstream-only codepath out of common dir
diff --git a/gen/lib/src/lib.rs b/gen/lib/src/lib.rs
index cecf654..aa60b05 100644
--- a/gen/lib/src/lib.rs
+++ b/gen/lib/src/lib.rs
@@ -8,12 +8,25 @@
 pub use crate::gen::Opt;
 use proc_macro2::TokenStream;
 
-pub use crate::gen::{Error, GeneratedCode, Result};
+pub use crate::gen::{Error, Result};
+
+/// Results of code generation.
+pub struct GeneratedCode {
+    /// The bytes of a C++ header file.
+    pub header: Vec<u8>,
+    /// The bytes of a C++ implementation file (e.g. .cc, cpp etc.)
+    pub cxx: Vec<u8>,
+}
 
 /// Generate C++ bindings code from a Rust token stream. This should be a Rust
 /// token stream which somewhere contains a `#[cxx::bridge] mod {}`.
 pub fn generate_header_and_cc(rust_source: TokenStream, opt: Opt) -> Result<GeneratedCode> {
-    gen::do_generate_from_tokens(rust_source, opt)
+    let syntax = syn::parse2(rust_source)?;
+    match gen::generate(syntax, opt, true, true) {
+        Ok((Some(header), Some(cxx))) => Ok(GeneratedCode { header, cxx }),
+        Err(err) => Err(err),
+        _ => panic!("Unexpected generation"),
+    }
 }
 
 #[cfg(test)]
diff --git a/gen/src/mod.rs b/gen/src/mod.rs
index a939760..9c35285 100644
--- a/gen/src/mod.rs
+++ b/gen/src/mod.rs
@@ -15,7 +15,6 @@
 use self::file::File;
 use crate::syntax::report::Errors;
 use crate::syntax::{self, check, Types};
-use proc_macro2::TokenStream;
 use std::clone::Clone;
 use std::fs;
 use std::path::Path;
@@ -30,14 +29,6 @@
     pub cxx_impl_annotations: Option<String>,
 }
 
-/// Results of code generation.
-pub struct GeneratedCode {
-    /// The bytes of a C++ header file.
-    pub header: Vec<u8>,
-    /// The bytes of a C++ implementation file (e.g. .cc, cpp etc.)
-    pub cxx: Vec<u8>,
-}
-
 pub(super) fn do_generate_bridge(path: &Path, opt: Opt) -> Vec<u8> {
     let header = false;
     generate_from_path(path, opt, header)
@@ -48,18 +39,6 @@
     generate_from_path(path, opt, header)
 }
 
-pub(super) fn do_generate_from_tokens(
-    tokens: TokenStream,
-    opt: Opt,
-) -> std::result::Result<GeneratedCode, Error> {
-    let syntax = syn::parse2::<File>(tokens)?;
-    match generate(syntax, opt, true, true) {
-        Ok((Some(header), Some(cxx))) => Ok(GeneratedCode { header, cxx }),
-        Err(err) => Err(err),
-        _ => panic!("Unexpected generation"),
-    }
-}
-
 fn generate_from_path(path: &Path, opt: Opt, header: bool) -> Vec<u8> {
     let source = match fs::read_to_string(path) {
         Ok(source) => source,
@@ -86,7 +65,7 @@
     }
 }
 
-fn generate(
+pub(super) fn generate(
     syntax: File,
     opt: Opt,
     gen_header: bool,