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/Cargo.toml b/dev/Cargo.toml
index 15b7c85..f4dc128 100644
--- a/dev/Cargo.toml
+++ b/dev/Cargo.toml
@@ -14,4 +14,9 @@
name = "syn-dev"
[dependencies]
-syn = { path = "..", features = ["full", "extra-traits"] }
+quote = "0.6"
+
+[dependencies.syn]
+path = ".."
+default-features = false
+features = ["parsing", "full", "extra-traits", "proc-macro"]
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() {}
+ })
}