All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Gary Guo" <gary@garyguo.net>
To: "Gary Guo" <gary@garyguo.net>, "Miguel Ojeda" <ojeda@kernel.org>,
	"Boqun Feng" <boqun@kernel.org>,
	"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
	"Benno Lossin" <lossin@kernel.org>,
	"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>
Subject: Re: [PATCH] rust: proc-macro2: enable `proc_macro_span` feature
Date: Wed, 30 Sep 2026 19:01:05 +0100	[thread overview]
Message-ID: <DLSUIU2NE5CT.ICPNRMGFATCB@garyguo.net> (raw)
In-Reply-To: <20260921115708.4009754-1-gary@kernel.org>

On Mon Sep 21, 2026 at 12:57 PM BST, Gary Guo wrote:
> From: Gary Guo <gary@garyguo.net>
>
> The `Span::join` function is very important in generating useful
> diagnostics. When invoking `syn::Spanned::span`, it attempts to return a
> overall span that covers the whole expression. If the `join` function is
> unavailable, however, only the span of the first token is generated.
>
> This causes worse diagnostics quality for all macros, notably pin-init,
> when compared to the pin-init's own diagnostics test suite with the feature
> enabled.
>
> For example, this diagnostic refers to only a fragment of path and not the
> full one:
>
>     error: The field index `1` of type `PhantomPinned` only has an effect if it has the `#[pin]` attribute
>      --> tests/ui/compile-fail/pin_data/tuple_struct_missing_pin_phantom.rs:6:20
>       |
>     6 | struct Tuple<T>(T, core::marker::PhantomPinned);
>       |                    ^^^^
>
> The special "<-" syntax gets parsed as two tokens, so they are only
> partially marked in diagnostics:
>
>     error: `<-` is not supported in tuple constructor syntax; name the fields by index instead, e.g. `Type { 0 <- initializer, 1: value }`
>      --> tests/ui/compile-fail/init/no_tuple_paren_arrow.rs:7:29
>       |
>     7 |     let _ = pin_init!(Tuple(<- 1, 2));
>       |                             ^
>
> In the upcoming pin-init self-reference series, there are also custom
> diagnostics that wish to use the span of the full type instead of its first
> token.
>
> Thus, enable the `proc_macro_span` feature. This does make use of the
> unstable `Span::join` function, but this is for producing diagnostics only,
> so we do not have a hard reliance on the feature. A very small tweak of
> proc-macro2 vendored code is needed to make the code compile for 1.85.
>
> Signed-off-by: Gary Guo <gary@garyguo.net>

Applied to pin-init-next. Thanks all!

Best,
Gary

> ---
> Miguel, please let me know if you're okay with the proc-macro2
> modification.
>
> I'd like to take this via pin-init-next if possible.
> ---
>  rust/Makefile                             | 1 +
>  rust/proc-macro2/README.md                | 3 ++-
>  rust/proc-macro2/probe/proc_macro_span.rs | 8 --------
>  3 files changed, 3 insertions(+), 9 deletions(-)


      parent reply	other threads:[~2026-09-30 18:01 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-21 11:57 [PATCH] rust: proc-macro2: enable `proc_macro_span` feature Gary Guo
2026-09-28  9:31 ` Miguel Ojeda
2026-09-28 11:28   ` Gary Guo
2026-09-28 12:21     ` Miguel Ojeda
2026-09-30 17:29       ` Miguel Ojeda
2026-09-30 18:01 ` Gary Guo [this message]

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=DLSUIU2NE5CT.ICPNRMGFATCB@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.