Revamp serde_codegen_internals error handling

This commit is contained in:
David Tolnay
2016-09-27 00:11:37 -07:00
parent 4ad6c4fd56
commit 0c18c151e2
5 changed files with 54 additions and 27 deletions
+8 -4
View File
@@ -9,13 +9,17 @@ use rustc_macro::TokenStream;
#[rustc_macro_derive(Serialize)]
pub fn derive_serialize(input: TokenStream) -> TokenStream {
let item = format!("#[derive(Serialize)]\n{}", input);
let expanded = serde_codegen::expand_single_item(&item);
expanded.parse().unwrap()
match serde_codegen::expand_single_item(&item) {
Ok(expanded) => expanded.parse().unwrap(),
Err(msg) => panic!(msg),
}
}
#[rustc_macro_derive(Deserialize)]
pub fn derive_deserialize(input: TokenStream) -> TokenStream {
let item = format!("#[derive(Deserialize)]\n{}", input);
let expanded = serde_codegen::expand_single_item(&item);
expanded.parse().unwrap()
match serde_codegen::expand_single_item(&item) {
Ok(expanded) => expanded.parse().unwrap(),
Err(msg) => panic!(msg),
}
}