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,