mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Gary Guo <gary@garyguo.net>
To: "Benno Lossin" <lossin@kernel.org>,
	"Miguel Ojeda" <ojeda@kernel.org>,
	"Boqun Feng" <boqun@kernel.org>,
	"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
	"Andreas Hindborg" <a.hindborg@kernel.org>,
	"Alice Ryhl" <aliceryhl@google.com>,
	"Trevor Gross" <tmgross@umich.edu>,
	"Danilo Krummrich" <dakr@kernel.org>,
	"Daniel Almeida" <daniel.almeida@collabora.com>,
	"Tamir Duberstein" <tamird@kernel.org>,
	"Alexandre Courbot" <acourbot@nvidia.com>,
	"Onur Özkan" <work@onurozkan.dev>
Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org,
	 Gary Guo <gary@garyguo.net>
Subject: [PATCH 2/8] rust: pin-init: internal: init: set span location of guards
Date: Tue, 06 Oct 2026 17:29:32 +0200	[thread overview]
Message-ID: <20261006-dev-selfref-dep-v1-2-da716f740d6d@garyguo.net> (raw)
In-Reply-To: <20261006-dev-selfref-dep-v1-0-da716f740d6d@garyguo.net>

Set the span location of the guards to point to the identifier. The
generated diagnostic is still not ideal, as ideally it points the place
where the identifier is used rather than the identifier name in
initializer, but is still an improvement to status quo.

Before the change:

    error[E0505]: cannot move out of value because it is borrowed
      --> tests/ui/compile-fail/init/accessor_lifetime.rs:8:13
       |
     8 |       let _ = init!(Foo {
       |  _____________^
     9 | |         x: 0,
    10 | |         _: {
    11 | |             let _: &'static usize = x;
       | |                    -------------- type annotation requires that borrow lasts for `'static`
    12 | |         },
    13 | |     });
       | |      ^
       | |      |
       | |______move out of value occurs here
       |        borrow of value occurs here

After the change:

    error[E0505]: cannot move out of value because it is borrowed
      --> tests/ui/compile-fail/init/accessor_lifetime.rs:9:9
       |
     9 |         x: 0,
       |         ^
       |         |
       |         move out of value occurs here
       |         borrow of value occurs here
    10 |         _: {
    11 |             let _: &'static usize = x;
       |                    -------------- type annotation requires that borrow lasts for `'static`

Signed-off-by: Gary Guo <gary@garyguo.net>
---
 rust/pin-init/internal/src/init.rs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/rust/pin-init/internal/src/init.rs b/rust/pin-init/internal/src/init.rs
index f0b23d0311ac..80e4dc068d2e 100644
--- a/rust/pin-init/internal/src/init.rs
+++ b/rust/pin-init/internal/src/init.rs
@@ -413,7 +413,7 @@ fn init_fields(fields: &Punctuated<InitializerField, Token![,]>, pinned: bool) -
         };
 
         // `mixed_site` ensures that the guard is not accessible to the user-controlled code.
-        let guard = format_ident!("__{ident}_guard", span = Span::mixed_site());
+        let guard = format_ident!("__{ident}_guard", span = span);
         let full_span = kind.span().resolved_at(Span::mixed_site());
 
         let init = match kind {

-- 
2.54.0


  parent reply	other threads:[~2026-10-06 15:30 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-06 15:29 [PATCH 0/8] rust: pin-init: various cleanups to prepare for self-reference Gary Guo
2026-10-06 15:29 ` [PATCH 1/8] rust: pin-init: internal: init: forget guards in reverse order Gary Guo
2026-10-06 15:29 ` Gary Guo [this message]
2026-10-06 15:29 ` [PATCH 3/8] rust: pin-init: internal: add utility to handle generics merging Gary Guo
2026-10-06 15:29 ` [PATCH 4/8] rust: pin-init: internal: add utility for extract a single attribute Gary Guo
2026-10-06 15:29 ` [PATCH 5/8] rust: pin-init: internal: pin_data: move projection struct into `const _: ()` block Gary Guo
2026-10-06 15:29 ` [PATCH 6/8] rust: pin-init: internal: pin_data: extract `#[cfg]` processing to its own function Gary Guo
2026-10-06 15:29 ` [PATCH 7/8] rust: pin-init: internal: pin_data: rename `'__pin` lifetime to `'__this` Gary Guo
2026-10-06 15:29 ` [PATCH 8/8] rust: pin-init: internal: pin_data: parse into `StructInfo` before generating Gary Guo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261006-dev-selfref-dep-v1-2-da716f740d6d@garyguo.net \
    --to=gary@garyguo.net \
    --cc=a.hindborg@kernel.org \
    --cc=acourbot@nvidia.com \
    --cc=aliceryhl@google.com \
    --cc=bjorn3_gh@protonmail.com \
    --cc=boqun@kernel.org \
    --cc=dakr@kernel.org \
    --cc=daniel.almeida@collabora.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lossin@kernel.org \
    --cc=ojeda@kernel.org \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=tamird@kernel.org \
    --cc=tmgross@umich.edu \
    --cc=work@onurozkan.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®