macros: use call_site hygiene to avoid unused qualification (#7866)

This commit is contained in:
mu001999
2026-01-22 14:54:43 +01:00
committed by GitHub
parent 8fd44d9bdc
commit 63abec0525
3 changed files with 24 additions and 3 deletions
+3
View File
@@ -15,6 +15,9 @@ fn compile_fail_full() {
#[cfg(feature = "full")]
t.pass("tests/pass/impl_trait.rs");
#[cfg(feature = "full")]
t.pass("tests/pass/use_builder_outer.rs");
#[cfg(feature = "full")]
t.compile_fail("tests/fail/macros_invalid_input.rs");
@@ -0,0 +1,9 @@
#![deny(unused_qualifications)]
use tests_build::tokio;
pub use tokio::runtime;
#[tokio::main]
async fn main() {
if true {}
}
+12 -3
View File
@@ -408,16 +408,23 @@ fn parse_knobs(mut input: ItemFn, is_test: bool, config: FinalConfig) -> TokenSt
let crate_path = config
.crate_name
.map(ToTokens::into_token_stream)
.unwrap_or_else(|| Ident::new("tokio", last_stmt_start_span).into_token_stream());
.unwrap_or_else(|| {
Ident::new("tokio", Span::call_site().located_at(last_stmt_start_span))
.into_token_stream()
});
let use_builder = quote_spanned! {Span::call_site().located_at(last_stmt_start_span)=>
use #crate_path::runtime::Builder;
};
let mut rt = match config.flavor {
RuntimeFlavor::CurrentThread | RuntimeFlavor::Local => {
quote_spanned! {last_stmt_start_span=>
#crate_path::runtime::Builder::new_current_thread()
Builder::new_current_thread()
}
}
RuntimeFlavor::Threaded => quote_spanned! {last_stmt_start_span=>
#crate_path::runtime::Builder::new_multi_thread()
Builder::new_multi_thread()
},
};
@@ -470,6 +477,8 @@ fn parse_knobs(mut input: ItemFn, is_test: bool, config: FinalConfig) -> TokenSt
#[cfg(all(#(#checks),*))]
#[allow(clippy::expect_used, clippy::diverging_sub_expression, clippy::needless_return, clippy::unwrap_in_result)]
{
#use_builder
return #rt
.enable_all()
.#build