It is showing in the output of the bits! macro and not easy to fix there
(at least not without making the macro more complex). Disable it for
now.
Link: https://github.com/rust-lang/rust-clippy/issues/15852
Reported-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
rust/Cargo.toml | 3 +++
1 file changed, 3 insertions(+)
diff --git a/rust/Cargo.toml b/rust/Cargo.toml
index 783e626802c..4f98b2c03d3 100644
--- a/rust/Cargo.toml
+++ b/rust/Cargo.toml
@@ -109,6 +109,9 @@ used_underscore_binding = "deny"
# nice to have, but cannot be enabled yet
#wildcard_imports = "deny" # still have many bindings::* imports
+# https://github.com/rust-lang/rust-clippy/issues/15852
+double_parens = "allow"
+
# these may have false positives
#option_if_let_else = "deny"
cognitive_complexity = "deny"
--
2.51.0
On Fri, Oct 10, 2025 at 12:12 AM Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> It is showing in the output of the bits! macro and not easy to fix there
> (at least not without making the macro more complex). Disable it for
> now.
>
> Link: https://github.com/rust-lang/rust-clippy/issues/15852
> Reported-by: Richard Henderson <richard.henderson@linaro.org>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
How about putting it in the macro expansion instead of globally allowing it?
macro_rules! foo {
($a:expr, $b:expr, $c:expr, $d:expr) => {
#[allow(clippy::double_parens)]
InterruptMask(((($a.union($b).union($c).union($d))).into_bits()) as u32)
}
}
Why is the double parenthesis needed here by the way? It's a method chain
> rust/Cargo.toml | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/rust/Cargo.toml b/rust/Cargo.toml
> index 783e626802c..4f98b2c03d3 100644
> --- a/rust/Cargo.toml
> +++ b/rust/Cargo.toml
> @@ -109,6 +109,9 @@ used_underscore_binding = "deny"
> # nice to have, but cannot be enabled yet
> #wildcard_imports = "deny" # still have many bindings::* imports
>
> +# https://github.com/rust-lang/rust-clippy/issues/15852
> +double_parens = "allow"
> +
> # these may have false positives
> #option_if_let_else = "deny"
> cognitive_complexity = "deny"
> --
> 2.51.0
>
>
On 10/10/25 14:23, Manos Pitsidianakis wrote:
> On Fri, Oct 10, 2025 at 12:12 AM Paolo Bonzini <pbonzini@redhat.com> wrote:
>>
>> It is showing in the output of the bits! macro and not easy to fix there
>> (at least not without making the macro more complex). Disable it for
>> now.
>>
>> Link: https://github.com/rust-lang/rust-clippy/issues/15852
>> Reported-by: Richard Henderson <richard.henderson@linaro.org>
>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>> ---
>
> How about putting it in the macro expansion instead of globally allowing it?
>
> macro_rules! foo {
> ($a:expr, $b:expr, $c:expr, $d:expr) => {
> #[allow(clippy::double_parens)]
> InterruptMask(((($a.union($b).union($c).union($d))).into_bits()) as u32)
> }
> }
Can you do it for procedural macros as well?
> Why is the double parenthesis needed here by the way? It's a method chain
It's just how the macro works, occasionally generating double
parentheses keeps the parser simple.
Paolo
On Fri, Oct 10, 2025 at 5:12 PM Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> On 10/10/25 14:23, Manos Pitsidianakis wrote:
> > On Fri, Oct 10, 2025 at 12:12 AM Paolo Bonzini <pbonzini@redhat.com> wrote:
> >>
> >> It is showing in the output of the bits! macro and not easy to fix there
> >> (at least not without making the macro more complex). Disable it for
> >> now.
> >>
> >> Link: https://github.com/rust-lang/rust-clippy/issues/15852
> >> Reported-by: Richard Henderson <richard.henderson@linaro.org>
> >> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> >> ---
> >
> > How about putting it in the macro expansion instead of globally allowing it?
> >
> > macro_rules! foo {
> > ($a:expr, $b:expr, $c:expr, $d:expr) => {
> > #[allow(clippy::double_parens)]
> > InterruptMask(((($a.union($b).union($c).union($d))).into_bits()) as u32)
> > }
> > }
>
> Can you do it for procedural macros as well?
Of course!
>
> > Why is the double parenthesis needed here by the way? It's a method chain
> It's just how the macro works, occasionally generating double
> parentheses keeps the parser simple.
Makes sense.
© 2016 - 2025 Red Hat, Inc.