[PATCH 4/7] rust: pin-init: internal: stop using `expect` in macro expansion

From: Gary Guo

Date: Fri Jul 10 2026 - 12:23:21 EST


Most warnings are suppressed from external macro expansions by default, and
`unfulfilled_lint_expectations` is one of them. All of our `expect`s inside
macros therefore do nothing, and actually mislead people to the lints would
be actually emitted without them.

All `#[expect]`s on lints that do not fire inside external macros (and
without spans from users) are removed, while the rest is coverted to
`#[allow]`.

Signed-off-by: Gary Guo <gary@xxxxxxxxxxx>
---
rust/pin-init/internal/src/init.rs | 2 +-
rust/pin-init/internal/src/pin_data.rs | 3 ---
2 files changed, 1 insertion(+), 4 deletions(-)

diff --git a/rust/pin-init/internal/src/init.rs b/rust/pin-init/internal/src/init.rs
index 28d30805d06b..c1197a994c82 100644
--- a/rust/pin-init/internal/src/init.rs
+++ b/rust/pin-init/internal/src/init.rs
@@ -334,7 +334,7 @@ fn make_field_check(
}),
};
quote! {
- #[allow(unreachable_code, clippy::diverging_sub_expression)]
+ #[allow(unreachable_code)]
// We use unreachable code to perform field checks. They're still checked by the compiler.
// SAFETY: this code is never executed.
let _ = || unsafe {
diff --git a/rust/pin-init/internal/src/pin_data.rs b/rust/pin-init/internal/src/pin_data.rs
index 263f67300727..4438107682e0 100644
--- a/rust/pin-init/internal/src/pin_data.rs
+++ b/rust/pin-init/internal/src/pin_data.rs
@@ -245,7 +245,6 @@ fn drop(&mut self) {
// `Drop`. Additionally we will implement this trait for the struct leading to a conflict,
// if it also implements `Drop`
trait MustNotImplDrop {}
- #[expect(drop_bounds)]
impl<T: ::core::ops::Drop + ?::core::marker::Sized> MustNotImplDrop for T {}
impl #impl_generics MustNotImplDrop for #ident #ty_generics
#whr
@@ -253,7 +252,6 @@ impl #impl_generics MustNotImplDrop for #ident #ty_generics
// We also take care to prevent users from writing a useless `PinnedDrop` implementation.
// They might implement `PinnedDrop` correctly for the struct, but forget to give
// `PinnedDrop` as the parameter to `#[pin_data]`.
- #[expect(non_camel_case_types)]
trait UselessPinnedDropImpl_you_need_to_specify_PinnedDrop {}
impl<T: ::pin_init::PinnedDrop + ?::core::marker::Sized>
UselessPinnedDropImpl_you_need_to_specify_PinnedDrop for T {}
@@ -432,7 +430,6 @@ impl #impl_generics ::core::marker::Copy for __ThePinData #ty_generics
{}

#[allow(dead_code)] // Some functions might never be used and private.
- #[expect(clippy::missing_safety_doc)]
impl #impl_generics __ThePinData #ty_generics
#whr
{

--
2.54.0