Update tokio-macros to 2.5.0

Test: m
Change-Id: Ia9afe3129b247b3a698b3deb2d2ed941ca6004b1
diff --git a/crates/tokio-macros/.android-checksum.json b/crates/tokio-macros/.android-checksum.json
index 5eaa7ff..7722686 100644
--- a/crates/tokio-macros/.android-checksum.json
+++ b/crates/tokio-macros/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"fafc23809d37c73ec55bbdb86b700e99a331542a184a513e660ad7a32fb6e31c","Android.bp":"029635376bf54196c43f76b38104b5e8edb3de48ece1e1778d54bad6ba8fa17b","CHANGELOG.md":"92d0642557a975637a70f80250cbbf3c426fe9274e95ec4bc41548568d8a657a","Cargo.toml":"01943f768c32760f73cb1a13cd82af1f6cf5591452dd0735770d75f7bcabcdef","LICENSE":"a17ab14c797e7b65c15985982ee00d3dcee1fefb8aac87dbae76a710ba2913a2","METADATA":"4f6c316626a64e642eca02df0b04697bff463499039382f8bc03734b72204477","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"2ce5d67bfab53489bb3351d5e5dbdf05f7b073c45e765ca77381bc12ee5a26f4","TEST_MAPPING":"c024977f1d74e9c72b87573f1c7cfe9a7f8d1daadb084005fb7edf55d17c0d6c","cargo_embargo.json":"e37f85d7910d24b95d6031db6603828d484aadca5822522d571d9c334ef6f3aa","src/entry.rs":"7ca7bd35b1bdaa13e955bf865317b875c4dcdb955f337ba0cf648b2d2e340e30","src/lib.rs":"2170b0828f20e4b3c59d529b0df9d4fffb80015d1c293966c96520eef98422bf","src/select.rs":"c01fc21a478c7b859926771c97697faf8d40ff4d0b8cb44e0be9a3aa35ecf38e"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"02cc2d46c1e5b2a0a98ee9ff0347f16eee74c93db5f923d328fbcd42f517449a","Android.bp":"661f146f5e57fcfd053942222994398a496216f339dc9d5cd388fb2020c722f8","CHANGELOG.md":"09121d23efd7af8690cd56e999954ded88ae7d5788462ef47cd73ea6ce6e0a48","Cargo.toml":"bbf4c19cd5f40b6f6dcd633d14f0e29c6e129cee48482106c0cabe2f382996e8","LICENSE":"a17ab14c797e7b65c15985982ee00d3dcee1fefb8aac87dbae76a710ba2913a2","METADATA":"9fdf318b8593e25d70164562c0dd4afc5a7b352cdc83788d7f4822be1f93dccd","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"2ce5d67bfab53489bb3351d5e5dbdf05f7b073c45e765ca77381bc12ee5a26f4","TEST_MAPPING":"c024977f1d74e9c72b87573f1c7cfe9a7f8d1daadb084005fb7edf55d17c0d6c","cargo_embargo.json":"e37f85d7910d24b95d6031db6603828d484aadca5822522d571d9c334ef6f3aa","src/entry.rs":"99011f43ee7a6aced620edff7f48d075aca12eede42a0d1d2d247959f84e2fd2","src/lib.rs":"ecf3c91e8649b688e48c3d968947b1b1dc4b84a099ff953cb2a8b35f6f19c20f","src/select.rs":"ec926a6b0b4e7dabffc8e49da4ab21549d623131373a735bc3312c29c7d2eeeb"}}
\ No newline at end of file
diff --git a/crates/tokio-macros/.cargo-checksum.json b/crates/tokio-macros/.cargo-checksum.json
index 65d2000..c101d98 100644
--- a/crates/tokio-macros/.cargo-checksum.json
+++ b/crates/tokio-macros/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"bc308e94c0a0c9a8c595fdb708dec60d08dca5f4fc67b64287676b619675f91b","Cargo.toml":"b86acb2f048fd43ade67bc01187f9eea2df4855a0261102cca651453a23d5cba","LICENSE":"0b83dc40cba89b9922bb84b0a9c7d2768ce37c1d7e138b7424fd4549915778c9","README.md":"6094ea500349ce239a12b07d7dfd4ea965a7f14c993da2abc4b3c39a0479683a","src/entry.rs":"4b7e392119553a795508aaf021eac5311da50702ac47f536753f8c8e7141593a","src/lib.rs":"b146a3bcf92aaf042e0ff7fd5387b69bc9882d2b5e0ab70298df83ee54ad6d7c","src/select.rs":"8fdef69056b4c24d109439e68535b51c0781505c4b6fc49cacf10d32097c54f1"},"package":"693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"}
\ No newline at end of file
+{"files":{"CHANGELOG.md":"556610ed3cd61018dae1a3062267246682e0dd605212e075be8109945e234f28","Cargo.toml":"7b971193559c96cd4a27accd0ef6cb06be1934469ae3b689f18b8ce3950ebae8","LICENSE":"0b83dc40cba89b9922bb84b0a9c7d2768ce37c1d7e138b7424fd4549915778c9","README.md":"6094ea500349ce239a12b07d7dfd4ea965a7f14c993da2abc4b3c39a0479683a","src/entry.rs":"7855d3c594f1611d16ee7c9354af479c7e8451a405e8cb1d751de3ed9db8336d","src/lib.rs":"aa212b0b82497eed55f0fac4a210e74ca7c1d49e5d717932e8f3b8ce48105460","src/select.rs":"a8af3f0dbc3ac3102081abc09ab1a1a8bfaab5fde1331b20ab397384be730fef"},"package":"6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8"}
\ No newline at end of file
diff --git a/crates/tokio-macros/Android.bp b/crates/tokio-macros/Android.bp
index 0d62301..e812963 100644
--- a/crates/tokio-macros/Android.bp
+++ b/crates/tokio-macros/Android.bp
@@ -17,7 +17,7 @@
     name: "libtokio_macros",
     crate_name: "tokio_macros",
     cargo_env_compat: true,
-    cargo_pkg_version: "2.4.0",
+    cargo_pkg_version: "2.5.0",
     crate_root: "src/lib.rs",
     edition: "2021",
     rustlibs: [
diff --git a/crates/tokio-macros/CHANGELOG.md b/crates/tokio-macros/CHANGELOG.md
index 9b30d34..5dac1ff 100644
--- a/crates/tokio-macros/CHANGELOG.md
+++ b/crates/tokio-macros/CHANGELOG.md
@@ -1,3 +1,9 @@
+# 2.5.0 (Jan 8th, 2025)
+
+- macros: suppress `clippy::needless_return` in `#[tokio::main]` ([#6874])
+
+[#6874]: https://github.com/tokio-rs/tokio/pull/6874
+
 # 2.4.0 (July 22nd, 2024)
 
 - msrv: increase MSRV to 1.70 ([#6645])
diff --git a/crates/tokio-macros/Cargo.toml b/crates/tokio-macros/Cargo.toml
index f789a1c..f2310a6 100644
--- a/crates/tokio-macros/Cargo.toml
+++ b/crates/tokio-macros/Cargo.toml
@@ -13,8 +13,13 @@
 edition = "2021"
 rust-version = "1.70"
 name = "tokio-macros"
-version = "2.4.0"
+version = "2.5.0"
 authors = ["Tokio Contributors <team@tokio.rs>"]
+build = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
 description = """
 Tokio's proc macros.
 """
@@ -28,6 +33,8 @@
 all-features = true
 
 [lib]
+name = "tokio_macros"
+path = "src/lib.rs"
 proc-macro = true
 
 [dependencies.proc-macro2]
diff --git a/crates/tokio-macros/METADATA b/crates/tokio-macros/METADATA
index 7a22f81..4d863de 100644
--- a/crates/tokio-macros/METADATA
+++ b/crates/tokio-macros/METADATA
@@ -1,17 +1,17 @@
 name: "tokio-macros"
 description: "Tokio\'s proc macros."
 third_party {
-  version: "2.4.0"
+  version: "2.5.0"
   license_type: NOTICE
   last_upgrade_date {
-    year: 2024
-    month: 12
-    day: 4
+    year: 2025
+    month: 1
+    day: 13
   }
   homepage: "https://crates.io/crates/tokio-macros"
   identifier {
     type: "Archive"
-    value: "https://static.crates.io/crates/tokio-macros/tokio-macros-2.4.0.crate"
-    version: "2.4.0"
+    value: "https://static.crates.io/crates/tokio-macros/tokio-macros-2.5.0.crate"
+    version: "2.5.0"
   }
 }
diff --git a/crates/tokio-macros/src/entry.rs b/crates/tokio-macros/src/entry.rs
index acdc261..07554cf 100644
--- a/crates/tokio-macros/src/entry.rs
+++ b/crates/tokio-macros/src/entry.rs
@@ -20,7 +20,7 @@
             "single_thread" => Err("The single threaded runtime flavor is called `current_thread`.".to_string()),
             "basic_scheduler" => Err("The `basic_scheduler` runtime flavor has been renamed to `current_thread`.".to_string()),
             "threaded_scheduler" => Err("The `threaded_scheduler` runtime flavor has been renamed to `multi_thread`.".to_string()),
-            _ => Err(format!("No such runtime flavor `{}`. The runtime flavors are `current_thread` and `multi_thread`.", s)),
+            _ => Err(format!("No such runtime flavor `{s}`. The runtime flavors are `current_thread` and `multi_thread`.")),
         }
     }
 }
@@ -36,7 +36,7 @@
         match s {
             "ignore" => Ok(UnhandledPanic::Ignore),
             "shutdown_runtime" => Ok(UnhandledPanic::ShutdownRuntime),
-            _ => Err(format!("No such unhandled panic behavior `{}`. The unhandled panic behaviors are `ignore` and `shutdown_runtime`.", s)),
+            _ => Err(format!("No such unhandled panic behavior `{s}`. The unhandled panic behaviors are `ignore` and `shutdown_runtime`.")),
         }
     }
 
@@ -239,12 +239,12 @@
             Ok(value) => Ok(value),
             Err(e) => Err(syn::Error::new(
                 span,
-                format!("Failed to parse value of `{}` as integer: {}", field, e),
+                format!("Failed to parse value of `{field}` as integer: {e}"),
             )),
         },
         _ => Err(syn::Error::new(
             span,
-            format!("Failed to parse value of `{}` as integer.", field),
+            format!("Failed to parse value of `{field}` as integer."),
         )),
     }
 }
@@ -255,7 +255,7 @@
         syn::Lit::Verbatim(s) => Ok(s.to_string()),
         _ => Err(syn::Error::new(
             span,
-            format!("Failed to parse value of `{}` as string.", field),
+            format!("Failed to parse value of `{field}` as string."),
         )),
     }
 }
@@ -275,7 +275,7 @@
         }
         _ => Err(syn::Error::new(
             span,
-            format!("Failed to parse value of `{}` as path.", field),
+            format!("Failed to parse value of `{field}` as path."),
         )),
     }
 }
@@ -285,7 +285,7 @@
         syn::Lit::Bool(b) => Ok(b.value),
         _ => Err(syn::Error::new(
             span,
-            format!("Failed to parse value of `{}` as bool.", field),
+            format!("Failed to parse value of `{field}` as bool."),
         )),
     }
 }
@@ -342,8 +342,7 @@
                     }
                     name => {
                         let msg = format!(
-                            "Unknown attribute {} is specified; expected one of: `flavor`, `worker_threads`, `start_paused`, `crate`, `unhandled_panic`",
-                            name,
+                            "Unknown attribute {name} is specified; expected one of: `flavor`, `worker_threads`, `start_paused`, `crate`, `unhandled_panic`",
                         );
                         return Err(syn::Error::new_spanned(namevalue, msg));
                     }
@@ -358,21 +357,19 @@
                 let msg = match name.as_str() {
                     "threaded_scheduler" | "multi_thread" => {
                         format!(
-                            "Set the runtime flavor with #[{}(flavor = \"multi_thread\")].",
-                            macro_name
+                            "Set the runtime flavor with #[{macro_name}(flavor = \"multi_thread\")]."
                         )
                     }
                     "basic_scheduler" | "current_thread" | "single_threaded" => {
                         format!(
-                            "Set the runtime flavor with #[{}(flavor = \"current_thread\")].",
-                            macro_name
+                            "Set the runtime flavor with #[{macro_name}(flavor = \"current_thread\")]."
                         )
                     }
                     "flavor" | "worker_threads" | "start_paused" | "crate" | "unhandled_panic" => {
-                        format!("The `{}` attribute requires an argument.", name)
+                        format!("The `{name}` attribute requires an argument.")
                     }
                     name => {
-                        format!("Unknown attribute {} is specified; expected one of: `flavor`, `worker_threads`, `start_paused`, `crate`, `unhandled_panic`.", name)
+                        format!("Unknown attribute {name} is specified; expected one of: `flavor`, `worker_threads`, `start_paused`, `crate`, `unhandled_panic`.")
                     }
                 };
                 return Err(syn::Error::new_spanned(path, msg));
@@ -438,8 +435,9 @@
     };
 
     let body_ident = quote! { body };
+    // This explicit `return` is intentional. See tokio-rs/tokio#4636
     let last_block = quote_spanned! {last_stmt_end_span=>
-        #[allow(clippy::expect_used, clippy::diverging_sub_expression)]
+        #[allow(clippy::expect_used, clippy::diverging_sub_expression, clippy::needless_return)]
         {
             return #rt
                 .enable_all()
diff --git a/crates/tokio-macros/src/lib.rs b/crates/tokio-macros/src/lib.rs
index b5d31c7..29ea286 100644
--- a/crates/tokio-macros/src/lib.rs
+++ b/crates/tokio-macros/src/lib.rs
@@ -211,6 +211,7 @@
 /// This option is only compatible with the `current_thread` runtime.
 ///
 /// ```no_run
+/// # #![allow(unknown_lints, unexpected_cfgs)]
 /// #[cfg(tokio_unstable)]
 /// #[tokio::main(flavor = "current_thread", unhandled_panic = "shutdown_runtime")]
 /// async fn main() {
@@ -225,6 +226,7 @@
 /// Equivalent code not using `#[tokio::main]`
 ///
 /// ```no_run
+/// # #![allow(unknown_lints, unexpected_cfgs)]
 /// #[cfg(tokio_unstable)]
 /// fn main() {
 ///     tokio::runtime::Builder::new_current_thread()
@@ -478,6 +480,7 @@
 /// This option is only compatible with the `current_thread` runtime.
 ///
 /// ```no_run
+/// # #![allow(unknown_lints, unexpected_cfgs)]
 /// #[cfg(tokio_unstable)]
 /// #[tokio::test(flavor = "current_thread", unhandled_panic = "shutdown_runtime")]
 /// async fn my_test() {
@@ -492,6 +495,7 @@
 /// Equivalent code not using `#[tokio::test]`
 ///
 /// ```no_run
+/// # #![allow(unknown_lints, unexpected_cfgs)]
 /// #[cfg(tokio_unstable)]
 /// #[test]
 /// fn my_test() {
diff --git a/crates/tokio-macros/src/select.rs b/crates/tokio-macros/src/select.rs
index 324b8f9..0ef6cfb 100644
--- a/crates/tokio-macros/src/select.rs
+++ b/crates/tokio-macros/src/select.rs
@@ -11,7 +11,7 @@
     };
 
     let variants = (0..branches)
-        .map(|num| Ident::new(&format!("_{}", num), Span::call_site()))
+        .map(|num| Ident::new(&format!("_{num}"), Span::call_site()))
         .collect::<Vec<_>>();
 
     // Use a bitfield to track which futures completed
diff --git a/pseudo_crate/Cargo.lock b/pseudo_crate/Cargo.lock
index 39eaecd..efb3a42 100644
--- a/pseudo_crate/Cargo.lock
+++ b/pseudo_crate/Cargo.lock
@@ -5255,9 +5255,9 @@
 
 [[package]]
 name = "tokio-macros"
-version = "2.4.0"
+version = "2.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
+checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8"
 dependencies = [
  "proc-macro2 1.0.92",
  "quote 1.0.37",
diff --git a/pseudo_crate/Cargo.toml b/pseudo_crate/Cargo.toml
index 419e9da..a624a09 100644
--- a/pseudo_crate/Cargo.toml
+++ b/pseudo_crate/Cargo.toml
@@ -330,7 +330,7 @@
 tinyvec_macros = "=0.1.1"
 tokio = "=1.42.0"
 tokio-io-timeout = "=1.2.0"
-tokio-macros = "=2.4.0"
+tokio-macros = "=2.5.0"
 tokio-openssl = "=0.6.5"
 tokio-stream = "=0.1.17"
 tokio-test = "=0.4.2"