DataSource and Scalar macros no longer hide errors. #73

I still haven't figured out why this problem was caused, but I solved it in a way that seemed silly together.
This commit is contained in:
Sunli 2020-05-11 13:31:13 +08:00
parent 8a84455b0a
commit 3609eedcd2

View File

@ -124,11 +124,12 @@ pub fn DataSource(args: TokenStream, input: TokenStream) -> TokenStream {
Ok(datasource_args) => datasource_args, Ok(datasource_args) => datasource_args,
Err(err) => return err.to_compile_error().into(), Err(err) => return err.to_compile_error().into(),
}; };
let item_impl = parse_macro_input!(input as ItemImpl); let input2: proc_macro2::TokenStream = input.clone().into();
let _item_impl = parse_macro_input!(input as ItemImpl);
let crate_name = get_crate_name(datasource_args.internal); let crate_name = get_crate_name(datasource_args.internal);
let expanded = quote! { let expanded = quote! {
#[#crate_name::async_trait::async_trait] #[#crate_name::async_trait::async_trait]
#item_impl #input2
}; };
expanded.into() expanded.into()
} }
@ -140,13 +141,14 @@ pub fn Scalar(args: TokenStream, input: TokenStream) -> TokenStream {
Ok(scalar_args) => scalar_args, Ok(scalar_args) => scalar_args,
Err(err) => return err.to_compile_error().into(), Err(err) => return err.to_compile_error().into(),
}; };
let input2: proc_macro2::TokenStream = input.clone().into();
let item_impl = parse_macro_input!(input as ItemImpl); let item_impl = parse_macro_input!(input as ItemImpl);
let self_ty = &item_impl.self_ty; let self_ty = &item_impl.self_ty;
let generic = &item_impl.generics; let generic = &item_impl.generics;
let where_clause = &item_impl.generics.where_clause; let where_clause = &item_impl.generics.where_clause;
let crate_name = get_crate_name(scalar_args.internal); let crate_name = get_crate_name(scalar_args.internal);
let expanded = quote! { let expanded = quote! {
#item_impl #input2
impl #generic #crate_name::Type for #self_ty #where_clause { impl #generic #crate_name::Type for #self_ty #where_clause {
fn type_name() -> std::borrow::Cow<'static, str> { fn type_name() -> std::borrow::Cow<'static, str> {