diff --git a/router_macro/src/lib.rs b/router_macro/src/lib.rs index 39c6bccc4..a492a4d7b 100644 --- a/router_macro/src/lib.rs +++ b/router_macro/src/lib.rs @@ -6,7 +6,7 @@ use proc_macro::{TokenStream, TokenTree}; use proc_macro2::Span; -use proc_macro_error2::{abort, proc_macro_error}; +use proc_macro_error2::{abort, proc_macro_error, set_dummy}; use quote::{quote, ToTokens}; use syn::{ spanned::Spanned, FnArg, Ident, ImplItem, ItemImpl, Path, Type, TypePath, @@ -213,7 +213,9 @@ fn lazy_route_impl( _args: proc_macro::TokenStream, s: TokenStream, ) -> TokenStream { - let mut im = syn::parse::(s).unwrap_or_else(|e| { + set_dummy(s.clone().into()); + + let mut im = syn::parse::(s.clone()).unwrap_or_else(|e| { abort!(e.span(), "`lazy_route` can only be used on an `impl` block") }); if im.trait_.is_none() { @@ -268,7 +270,7 @@ fn lazy_route_impl( }); match item { - None => abort!(im.span(), "must contain a fn called `view`"), + None => s, Some(fun) => { if let Some(a) = fun.sig.asyncness { abort!(a.span(), "`view` method should not be async")