Re: [PATCH v9 4/5] rust: kbuild: provide `RUSTC_HAS_DO_NOT_RECOMMEND` symbol

From: Andreas Hindborg
Date: Wed Apr 09 2025 - 06:18:37 EST


"Oliver Mangold" <oliver.mangold@xxxxx> writes:

> From: Miguel Ojeda <ojeda@xxxxxxxxxx>
>
> Rust 1.85.0 (current stable version) stabilized [1]
> `#[diagnostic::do_not_recommend]` [2].
>
> In order to use it across all supported Rust versions, introduce a new
> Kconfig symbol for it.
>
> This allows to perform conditional compilation based on it, e.g. on the
> use site to enable the attribute:
>
> #[cfg_attr(RUSTC_HAS_DO_NOT_RECOMMEND, diagnostic::do_not_recommend)]
> impl A for i32 {}
>
> An alternative would have been to `allow` the following warning:
>
> #![allow(unknown_or_malformed_diagnostic_attributes)]
>
> However, that would lose the checking for typos across all versions,
> which we do not want to lose.
>
> One can also use the Kconfig symbol to allow the warning in older
> compilers instead, to avoid repeating the `cfg_attr` line above in all
> use sites:
>
> #![cfg_attr(
> not(RUSTC_HAS_DO_NOT_RECOMMEND),
> expect(unknown_or_malformed_diagnostic_attributes)
> )]
>
> That still loses the checking for typos in older versions, but we still
> keep it in newer ones, thus we should still catch mistakes eventually.
>
> In this case we can promote it to `expect` as shown above, so that we do
> not forget to remove these lines if we stop using the attribute somewhere.
>
> Link: https://github.com/rust-lang/rust/pull/132056 [1]
> Link: https://doc.rust-lang.org/reference/attributes/diagnostics.html#the-diagnosticdo_not_recommend-attribute [2]
> Link: https://lore.kernel.org/rust-for-linux/CANiq72mYfhuRWkjomb1vOMMPOaxvdS6qjfVLAwxUw6ecdqyh2A@xxxxxxxxxxxxxx/
> Signed-off-by: Miguel Ojeda <ojeda@xxxxxxxxxx>
> Signed-off-by: Oliver Mangold <oliver.mangold@xxxxx>


Reviewed-by: Andreas Hindborg <a.hindborg@xxxxxxxxxx>


Best regards,
Andreas Hindborg