rust/tests
Trevor Gross 8751016e20
Rollup merge of #142476 - dtolnay:attrbinop, r=fmease
Insert parentheses around binary operation with attribute

Fixes the bug found by `@fmease` in https://github.com/rust-lang/rust/pull/134661#pullrequestreview-2538983253.

Previously, `-Zunpretty=expanded` would expand this program as follows:

```rust
#![feature(stmt_expr_attributes)]
#![allow(unused_attributes)]

macro_rules! group {
    ($e:expr) => {
        $e
    };
}

macro_rules! extra {
    ($e:expr) => {
        #[allow()] $e
    };
}

fn main() {
    let _ = #[allow()] 1 + 1;
    let _ = group!(#[allow()] 1) + 1;
    let _ = 1 + group!(#[allow()] 1);
    let _ = extra!({ 0 }) + 1;
    let _ = extra!({ 0 } + 1);
}
```

```console
let _ = #[allow()] 1 + 1;
let _ = #[allow()] 1 + 1;
let _ = 1 + #[allow()] 1;
let _ = #[allow()] { 0 } + 1;
let _ = #[allow()] { 0 } + 1;
```

The first 4 statements are the correct expansion, but the last one is not. The attribute is supposed to apply to the entire binary operation, not only to the left operand.

After this PR, the 5th statement will expand to:

```console
let _ = #[allow()] ({ 0 } + 1);
```

In the future, as some subset of `stmt_expr_attributes` approaches stabilization, it is possible that we will need to do parenthesization for a number of additional cases depending on the outcome of https://github.com/rust-lang/rust/issues/127436. But for now, at least this PR makes the pretty-printer align with the current behavior of the parser.

r? fmease
2025-06-20 23:25:54 -04:00
..
assembly Rollup merge of #140920 - RalfJung:target-feature-unification, r=nnethercote,WaffleLapkin 2025-06-20 02:50:38 -04:00
auxiliary aux: add {Meta,Pointee}Sized bounds to minicore 2025-06-16 23:04:33 +00:00
codegen Rollup merge of #140920 - RalfJung:target-feature-unification, r=nnethercote,WaffleLapkin 2025-06-20 02:50:38 -04:00
codegen-units tests: {Meta,Pointee}Sized in non-minicore tests 2025-06-16 23:04:33 +00:00
coverage coverage: Revert "unused local file IDs" due to empty function names 2025-05-27 23:33:29 +10:00
coverage-run-rustdoc
crashes Rollup merge of #140247 - BoxyUwU:iats_no_query_cycles, r=lcnr 2025-06-18 20:22:48 -04:00
debuginfo tests: {Meta,Pointee}Sized in non-minicore tests 2025-06-16 23:04:33 +00:00
incremental tests: bless remaining tests 2025-06-16 23:04:35 +00:00
mir-opt Update mir-opt tests. 2025-06-18 10:20:20 +02:00
pretty Rollup merge of #134847 - dtolnay:asymmetrical, r=fmease 2025-06-13 05:16:54 +02:00
run-make Auto merge of #139244 - jieyouxu:exp/auto-cross-run-make, r=Kobzol 2025-06-19 06:27:02 +00:00
rustdoc rustdoc: PointeeSized bounds with extern types 2025-06-16 23:04:36 +00:00
rustdoc-gui rustdoc: make srcIndex no longer a global variable 2025-06-16 20:22:24 -05:00
rustdoc-js yeet CanonicalVarInfo 2025-05-23 12:10:53 +00:00
rustdoc-js-std Consistent trait bounds for ExtractIf Debug impls 2025-05-05 19:46:46 -07:00
rustdoc-json fix clippy 2025-06-17 23:22:51 +02:00
rustdoc-ui rustdoc: {Meta,Pointee,}Sized in non-minicore 2025-06-16 23:04:36 +00:00
ui Auto merge of #142794 - tgross35:rollup-iae7okj, r=tgross35 2025-06-20 23:09:48 +00:00
ui-fulldeps Add an attribute-related parenthesization edge case 2025-06-20 13:49:12 -07:00
COMPILER_TESTS.md