mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
rust: pin-init: internal: add custom diagnostic when #[pin_data] is not implemented
Produce a more helpful error message when `#[pin_data]` is omitted. The
error message changes from
error[E0277]: the trait bound `Foo: pin_init::__internal::HasPinData` is not satisfied
--> tests/ui/compile-fail/init/missing_pin_data.rs:9:19
|
9 | pin_init!(Self { a: 42 })
| ^^^^ unsatisfied trait bound
|
help: the trait `pin_init::__internal::HasPinData` is not implemented for `Foo`
--> tests/ui/compile-fail/init/missing_pin_data.rs:3:1
|
3 | struct Foo {
| ^^^^^^^^^^
to
error[E0277]: `Foo` cannot be used with `pin_init!` macro
--> tests/ui/compile-fail/init/missing_pin_data.rs:9:19
|
9 | pin_init!(Self { a: 42 })
| ^^^^ unsatisfied trait bound
|
help: the trait `pin_init::__internal::HasPinData` is not implemented for `Foo`
--> tests/ui/compile-fail/init/missing_pin_data.rs:3:1
|
3 | struct Foo {
| ^^^^^^^^^^
= note: did you forget to add `#[pin_data]` attribute to the struct?
Link: https://patch.msgid.link/20260923-dev-pin-data-diag-v1-4-e4d7193569e5@garyguo.net
Signed-off-by: Gary Guo <gary@garyguo.net>
This commit is contained in:
parent
c5155147cd
commit
6f78441c58
|
|
@ -67,6 +67,10 @@ pub unsafe fn new() -> Self {
|
|||
///
|
||||
/// `pin-init` relies on the correctness of the helper functions defined on `PinData`.
|
||||
/// Thus, only the `#[pin_data]` can implement this trait.
|
||||
#[diagnostic::on_unimplemented(
|
||||
message = "`{Self}` cannot be used with `pin_init!` macro",
|
||||
note = "did you forget to add `#[pin_data]` attribute to the struct?"
|
||||
)]
|
||||
pub unsafe trait HasPinData {
|
||||
type PinData;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user