rust/tests
Jubilee ef22c14dfb
Rollup merge of #136397 - Shunpoco:issue-136223-ICE-pattern-mutability-cap-violated, r=Nadrieril
Add a comment pointing to ICE-136223

Fixes #136223

## Steps how the ICE happen
This explanation is based on the test case `&Some(Some(x)) = &Some(&mut Some(0))`.
The case should fail with E0596 error, but it catches the debug assertion instead.

1. For the first `&`: In check_pat_ref(), the value max_ref_mutbl becomes MutblCap::Not ([here](fdd1a3b026/compiler/rustc_hir_typeck/src/pat.rs (L2394-L2396))). Once max_ref_mutbl becomes Not, it will never be back to MutblCap::Mut.
2. For `&mut`: In peel_off_references(), because Some(x) doesn't have `&` nor `&mut`, `&mut` in `&mut Some(0)` is not consumed then default_binding_mode (def_br) becomes `ByRef::Yes(Mutability::Mut)` (around [here](fdd1a3b026/compiler/rustc_hir_typeck/src/pat.rs (L519-L536))). This will be inherited to the next step. So this pattern has the mismatch between `def_br=Yes(Mut)` and `max_ref_mutbl=Not` now.
3. For the value `0`: Because of the step 2, the default_binding_mode is `Yes(Mut)`, but max_ref_mutbl is `Not` from the step 1. It causes the assertion error [here](fdd1a3b026/compiler/rustc_hir_typeck/src/pat.rs (L427-L430)).

## What this PR fixes
Step 1 has happened from [this commit](e2f3ce9568) by deleting `no_ref_mut_behind_and` from the if block. In my understanding, after RFC3627 is released, step 1 should happen not only 2024 edition but also other editions to track MutblCap value. But for now, it should not happen for non-2024 edition. So I put it back.

NOTE: I think there is another solution - We should return an E0596 error in calc_default_binding_mode() instead of the debug assertion. Since the assertion is caused by the mismatch between `def_br = Yes(Mut)` and `max_ref_mutbl = Not`, but in my understanding this violation is the same as E0596. check_pat_ident() does returns E0596 by a similar reason [here](fdd1a3b026/compiler/rustc_hir_typeck/src/pat.rs (L837-L856)).
2025-02-08 20:41:20 -08:00
..
assembly Rollup merge of #133932 - bjorn3:fix_ptx_kernel_abi, r=wesleywiser 2025-02-05 19:53:45 -08:00
auxiliary tests/assembly/asm: Remove uses of rustc_attrs and lang_items features by using minicore 2024-12-18 02:59:07 +09:00
codegen Rollup merge of #136200 - purplesyringa:wasm-eh-fixes, r=bjorn3 2025-02-08 21:37:25 +01:00
codegen-units Remove -Zinline-in-all-cgus and clean up CGU partitioning tests 2025-01-27 23:48:47 -05:00
coverage coverage: Completely overhaul counter assignment, using node-flow graphs 2025-01-16 22:07:18 +11:00
coverage-run-rustdoc
crashes Rollup merge of #134367 - WaffleLapkin:trait_upcasting_as_a_treat, r=compiler-errors 2025-02-07 18:26:25 +01:00
debuginfo Revert "Remove the Arc rt::init allocation for thread info" 2025-01-14 13:37:25 +01:00
incremental add test for issue 135514 2025-01-15 08:26:23 +00:00
mir-opt Auto merge of #136450 - compiler-errors:simplify-cast, r=saethlin 2025-02-07 06:26:41 +00:00
pretty Update tests to use new proc-macro header 2024-11-27 07:18:25 -08:00
run-make tests: add a missing needs-symlink 2025-02-07 01:41:54 +08:00
rustdoc Rollup merge of #136274 - compiler-errors:sized-wf, r=lcnr 2025-02-04 18:49:37 +01:00
rustdoc-gui Add GUI test for new "sans serif fonts" setting 2025-01-29 11:01:14 +01:00
rustdoc-js Rollup merge of #134277 - notriddle:notriddle/inline-into, r=GuillaumeGomez 2024-12-16 20:00:20 +01:00
rustdoc-js-std Treat other items as functions for the purpose of type-based search 2025-01-16 11:52:00 -06:00
rustdoc-json Add missing lang items in no_core tests in rustdoc 2025-02-04 01:05:31 +00:00
rustdoc-ui Rollup merge of #136274 - compiler-errors:sized-wf, r=lcnr 2025-02-04 18:49:37 +01:00
ui Rollup merge of #136397 - Shunpoco:issue-136223-ICE-pattern-mutability-cap-violated, r=Nadrieril 2025-02-08 20:41:20 -08:00
ui-fulldeps Rollup merge of #134777 - saethlin:enable-more-tests-on-windows, r=Noratrieb 2025-02-04 05:36:50 -05:00
COMPILER_TESTS.md