rust/tests
Matthias Krüger b12bb2530b
Rollup merge of #134847 - dtolnay:asymmetrical, r=fmease
Implement asymmetrical precedence for closures and jumps

I have been through a series of asymmetrical precedence designs in Syn, and finally have one that I like and is worth backporting into rustc. It is based on just 2 bits of state: `next_operator_can_begin_expr` and `next_operator_can_continue_expr`.

Asymmetrical precedence is the thing that enables `(return 1) + 1` to require parentheses while `1 + return 1` does not, despite `+` always having stronger precedence than `return` [according to the Rust Reference](https://doc.rust-lang.org/1.83.0/reference/expressions.html#expression-precedence). This is facilitated by `next_operator_can_continue_expr`.

Relatedly, it is the thing that enables `(return) - 1` to require parentheses while `return + 1` does not, despite `+` and `-` having exactly the same precedence. This is facilitated by `next_operator_can_begin_expr`.

**Example:**

```rust
macro_rules! repro {
    ($e:expr) => {
        $e - $e;
        $e + $e;
    };
}

fn main() {
    repro!{return}
    repro!{return 1}
}
```

`-Zunpretty=expanded` **Before:**

```console
fn main() {
    (return) - (return);
    (return) + (return);
    (return 1) - (return 1);
    (return 1) + (return 1);
}
```

**After:**

```console
fn main() {
    (return) - return;
    return + return;
    (return 1) - return 1;
    (return 1) + return 1;
}
```
2025-06-13 05:16:54 +02:00
..
assembly Add new Tier-3 targets: loongarch32-unknown-none* 2025-06-06 08:19:38 +08:00
auxiliary stabilize naked_functions 2025-04-20 11:18:38 +02:00
codegen x86 (32/64): go back to passing SIMD vectors by-ptr 2025-06-04 08:38:49 +02:00
codegen-units Remove mono item collection strategy override from -Zprint-mono-items 2025-05-09 12:19:09 +02: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 #142240 - fee1-dead-contrib:push-zkkzoxlymslv, r=oli-obk 2025-06-10 16:54:51 +02:00
debuginfo tests: Change "fastcall" to "system" in some tests 2025-06-09 16:10:21 -07:00
incremental tests: Change "fastcall" to "system" in some tests 2025-06-09 16:10:21 -07:00
mir-opt Auto merge of #141485 - dianqk:early_otherwise_branch_loop, r=oli-obk 2025-06-10 14:50:54 +00:00
pretty Rollup merge of #134847 - dtolnay:asymmetrical, r=fmease 2025-06-13 05:16:54 +02:00
run-make Rollup merge of #142297 - jieyouxu:needs-target-std, r=Kobzol 2025-06-11 13:48:11 +02:00
rustdoc Support middle::ty assoc const eq predicates again 2025-06-05 19:19:18 +02:00
rustdoc-gui Rollup merge of #139831 - lolbinarycat:rustdoc-mobile-sidebar, r=GuillaumeGomez 2025-05-25 04:00:55 +02: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 rustdoc-json: Rearrange deck chairs in ABI testing 2025-06-09 16:11:06 -07:00
rustdoc-ui Auto merge of #142008 - RalfJung:const-eval-error-here, r=oli-obk 2025-06-08 23:18:34 +00:00
ui Rollup merge of #134847 - dtolnay:asymmetrical, r=fmease 2025-06-13 05:16:54 +02:00
ui-fulldeps Rollup merge of #134847 - dtolnay:asymmetrical, r=fmease 2025-06-13 05:16:54 +02:00
COMPILER_TESTS.md