Emit main in dev crate whether or not there is error
Hides an unnecessary extra error:
error[E0601]: `main` function not found in crate `syn_dev`
|
= note: consider adding a `main` function to `dev/main.rs`
diff --git a/dev/parse.rs b/dev/parse.rs
index 2934066..2a92550 100644
--- a/dev/parse.rs
+++ b/dev/parse.rs
@@ -1,11 +1,18 @@
extern crate proc_macro;
use proc_macro::TokenStream;
-use syn::{parse_macro_input, File};
+use quote::quote;
+use syn::File;
#[proc_macro]
pub fn r#mod(input: TokenStream) -> TokenStream {
- let file = parse_macro_input!(input as File);
- println!("{:#?}", file);
- "fn main() {}".parse().unwrap()
+ let compile_error = syn::parse::<File>(input)
+ .map(|file| println!("{:#?}", file))
+ .map_err(|err| err.to_compile_error())
+ .err();
+
+ TokenStream::from(quote! {
+ #compile_error
+ fn main() {}
+ })
}