macros: fix span of body variable (#5244)

This commit is contained in:
Taiki Endo
2022-11-30 03:50:41 +09:00
committed by GitHub
parent 766f22fae3
commit 5d25ec46d5
2 changed files with 18 additions and 2 deletions
+3 -2
View File
@@ -383,6 +383,7 @@ fn parse_knobs(mut input: syn::ItemFn, is_test: bool, config: FinalConfig) -> To
let body = &input.block;
let brace_token = input.block.brace_token;
let body_ident = quote! { body };
let block_expr = quote_spanned! {last_stmt_end_span=>
#[allow(clippy::expect_used, clippy::diverging_sub_expression)]
{
@@ -390,7 +391,7 @@ fn parse_knobs(mut input: syn::ItemFn, is_test: bool, config: FinalConfig) -> To
.enable_all()
.build()
.expect("Failed building the Runtime")
.block_on(body);
.block_on(#body_ident);
}
};
@@ -479,7 +480,7 @@ pub(crate) fn test(args: TokenStream, item: TokenStream, rt_multi_thread: bool)
};
let config = if let Some(attr) = input.attrs.iter().find(|attr| attr.path.is_ident("test")) {
let msg = "second test attribute is supplied";
Err(syn::Error::new_spanned(&attr, msg))
Err(syn::Error::new_spanned(attr, msg))
} else {
AttributeArgs::parse_terminated
.parse(args)
+15
View File
@@ -71,3 +71,18 @@ pub mod clippy_semicolon_if_nothing_returned {
// To trigger clippy::semicolon_if_nothing_returned lint, the block needs to contain newline.
}
}
// https://github.com/tokio-rs/tokio/issues/5243
pub mod issue_5243 {
macro_rules! mac {
(async fn $name:ident() $b:block) => {
#[::tokio::test]
async fn $name() {
$b
}
};
}
mac!(
async fn foo() {}
);
}