mirror of
https://github.com/tokio-rs/tokio.git
synced 2026-09-08 00:00:13 +02:00
macros: address remainging clippy::semicolon_if_nothing_returned warning (#4252)
This commit is contained in:
@@ -339,17 +339,17 @@ fn parse_knobs(mut input: syn::ItemFn, is_test: bool, config: FinalConfig) -> To
|
|||||||
let body = &input.block;
|
let body = &input.block;
|
||||||
let brace_token = input.block.brace_token;
|
let brace_token = input.block.brace_token;
|
||||||
let (tail_return, tail_semicolon) = match body.stmts.last() {
|
let (tail_return, tail_semicolon) = match body.stmts.last() {
|
||||||
Some(syn::Stmt::Semi(expr, _)) => match expr {
|
Some(syn::Stmt::Semi(syn::Expr::Return(_), _)) => (quote! { return }, quote! { ; }),
|
||||||
syn::Expr::Return(_) => (quote! { return }, quote! { ; }),
|
Some(syn::Stmt::Semi(..)) | Some(syn::Stmt::Local(..)) | None => {
|
||||||
_ => match &input.sig.output {
|
match &input.sig.output {
|
||||||
syn::ReturnType::Type(_, ty) if matches!(&**ty, syn::Type::Tuple(ty) if ty.elems.is_empty()) =>
|
syn::ReturnType::Type(_, ty) if matches!(&**ty, syn::Type::Tuple(ty) if ty.elems.is_empty()) =>
|
||||||
{
|
{
|
||||||
(quote! {}, quote! { ; }) // unit
|
(quote! {}, quote! { ; }) // unit
|
||||||
}
|
}
|
||||||
syn::ReturnType::Default => (quote! {}, quote! { ; }), // unit
|
syn::ReturnType::Default => (quote! {}, quote! { ; }), // unit
|
||||||
syn::ReturnType::Type(..) => (quote! {}, quote! {}), // ! or another
|
syn::ReturnType::Type(..) => (quote! {}, quote! {}), // ! or another
|
||||||
},
|
}
|
||||||
},
|
}
|
||||||
_ => (quote! {}, quote! {}),
|
_ => (quote! {}, quote! {}),
|
||||||
};
|
};
|
||||||
input.block = syn::parse2(quote_spanned! {last_stmt_end_span=>
|
input.block = syn::parse2(quote_spanned! {last_stmt_end_span=>
|
||||||
|
|||||||
@@ -46,3 +46,25 @@ pub async fn issue_4175_test() -> std::io::Result<()> {
|
|||||||
return Ok(());
|
return Ok(());
|
||||||
panic!();
|
panic!();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// https://github.com/tokio-rs/tokio/issues/4175
|
||||||
|
pub mod clippy_semicolon_if_nothing_returned {
|
||||||
|
#![deny(clippy::semicolon_if_nothing_returned)]
|
||||||
|
|
||||||
|
#[tokio::main]
|
||||||
|
pub async fn local() {
|
||||||
|
let _x = ();
|
||||||
|
}
|
||||||
|
#[tokio::main]
|
||||||
|
pub async fn item() {
|
||||||
|
fn _f() {}
|
||||||
|
}
|
||||||
|
#[tokio::main]
|
||||||
|
pub async fn semi() {
|
||||||
|
panic!();
|
||||||
|
}
|
||||||
|
#[tokio::main]
|
||||||
|
pub async fn empty() {
|
||||||
|
// To trigger clippy::semicolon_if_nothing_returned lint, the block needs to contain newline.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user