Commit Graph

280514 Commits

Author SHA1 Message Date
Matthias Krüger 7489e56e29 Rollup merge of #136598 - compiler-errors:unit-fallback, r=WaffleLapkin
Fix suggestion for `dependency_on_unit_never_type_fallback` involving closures + format args expansions

fixes #136562

r? wafflelapkin or reassign
2025-02-07 18:26:28 +01:00
Matthias Krüger 20f9e973d9 Rollup merge of #136577 - dianne:simple-pat-migration-simplification, r=Nadrieril
Pattern Migration 2024: try to suggest eliding redundant binding modifiers

This is based on #136475. Only the last commit is new.

This is a simpler, more restrictive alternative to #136496, meant to partially address #136047. If a pattern can be migrated to Rust 2024 solely by removing redundant binding modifiers, this will make that suggestion; otherwise, it uses the old suggestion of making the pattern fully explicit.

Relevant tracking issue: #131414

``@rustbot`` label A-diagnostics A-patterns A-edition-2024

r? ``@Nadrieril``
2025-02-07 18:26:27 +01:00
Matthias Krüger 26b288760e Rollup merge of #135945 - estebank:useless-parens, r=compiler-errors
Remove some unnecessary parens in `assert!` conditions

While working on #122661, some of these started triggering our "unnecessary parens" lints due to a change in the `assert!` desugaring. A cursory search identified a few more. Some of these have been carried from before 1.0, were a bulk rename from the previous name of `assert!` left them in that state. I went and removed as many of these unnecessary parens as possible in order to have fewer annoyances in the future if we make the lint smarter.
2025-02-07 18:26:26 +01:00
Matthias Krüger 32f7733027 Rollup merge of #135940 - ehuss:toolstate-update, r=Mark-Simulacrum
Update toolstate maintainers

This updates the toolstate maintainers to more closely match who is still active.
2025-02-07 18:26:25 +01:00
Matthias Krüger cbd44d7998 Rollup merge of #134367 - WaffleLapkin:trait_upcasting_as_a_treat, r=compiler-errors
Stabilize `feature(trait_upcasting)`

This feature was "done" for a while now, I think it's finally time to stabilize it! Stabilization report: https://github.com/rust-lang/rust/pull/134367#issuecomment-2545839841.
cc reference PR: https://github.com/rust-lang/reference/pull/1622.

Closes #65991 (tracking issue), closes #89460 (the lint is no longer future incompat).

r? compiler-errors
2025-02-07 18:26:25 +01:00
bors 64e06c0f55 Auto merge of #136684 - matthiaskrgr:rollup-mlpzre5, r=matthiaskrgr
Rollup of 8 pull requests

Successful merges:

 - #135973 (fix tail call checks wrt `#[track_caller]`)
 - #136191 (compiler: replace few consts arrays with statics to remove const dupes)
 - #136565 (compiler: Clean up weird `rustc_abi` reexports)
 - #136582 (Revert "CI: build FreeBSD artifacts on FreeBSD 13.4")
 - #136627 (MIR validation: add comment explaining the limitations of CfgChecker)
 - #136634 (Stabilise `Cursor::{get_mut, set_position}` in `const` scenarios.)
 - #136643 (ping me for attribute-related changes)
 - #136644 (Add `rustc_hir_pretty::item_to_string` function)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-02-07 13:42:52 +00:00
Matthias Krüger 0047263387 Rollup merge of #136644 - GuillaumeGomez:item-to-string, r=Urgau
Add `rustc_hir_pretty::item_to_string` function

Another one needed for rustdoc. :)

r? `@Urgau`
2025-02-07 12:02:02 +01:00
Matthias Krüger c906858d09 Rollup merge of #136643 - jdonszelmann:add-triagebot-attrs, r=fmease
ping me for attribute-related changes

r? `@fmease`
2025-02-07 12:02:00 +01:00
Matthias Krüger d9f95ecd09 Rollup merge of #136634 - bjoernager:const-mut-cursor, r=m-ou-se
Stabilise `Cursor::{get_mut, set_position}` in `const` scenarios.

Closes: #130801

This PR stabilises the `const_mut_cursor` feature gate.
2025-02-07 12:02:00 +01:00
Matthias Krüger 5df99b0bd2 Rollup merge of #136627 - RalfJung:mir-validation-cfg-checker, r=compiler-errors
MIR validation: add comment explaining the limitations of CfgChecker

I hope this right but I am not sure.^^
Cc `@compiler-errors` `@lcnr` `@cjgillot` `@oli-obk`
2025-02-07 12:01:59 +01:00
Matthias Krüger 8b69cf1983 Rollup merge of #136582 - asomers:revert-132232, r=tgross35
Revert "CI: build FreeBSD artifacts on FreeBSD 13.4"

This reverts commit cf34545720.

That commit led to a regression of
https://github.com/rust-lang/rust/issues/132185 .  So my analysis that the problem lay in FreeBSD 13.2's specific LLVM version was clearly wrong.  Revert that commit until we can figure out the real root cause.

Fixes #132185

try-job: dist-x86_64-freebsd
try-job: dist-various-2
2025-02-07 12:01:58 +01:00
Matthias Krüger d84b499919 Rollup merge of #136565 - workingjubilee:fixup-abi-in-target, r=compiler-errors
compiler: Clean up weird `rustc_abi` reexports

Just general cleanup in `rustc_target` and `rustc_abi`. I was originally going to make a PR with a larger change that also fixed the last few crates and in doing so removed some clutter from `rustc_abi`, but wound up slightly stuck on it, then figured out how to fix it, and then got distracted by other things... so now I'm trying to figure out what I had figured out earlier.
2025-02-07 12:01:58 +01:00
Matthias Krüger 3ce7d9c638 Rollup merge of #136191 - klensy:const_a, r=compiler-errors
compiler: replace few consts arrays with statics to remove const dupes

Locally on `x86_64-pc-windows-msvc` -100kb for `rustc_driver.dll`
2025-02-07 12:01:57 +01:00
Matthias Krüger 1c794b908b Rollup merge of #135973 - WaffleLapkin:tail-track-caller-fix, r=compiler-errors
fix tail call checks wrt `#[track_caller]`

Only check the caller + disallow caller having the attribute.

fixes #134336

r? `@compiler-errors`

<sub>apparently there were no tests for `#[track_caller]` before... ooops</sub>
2025-02-07 12:01:56 +01:00
bors 5ff18d0eae Auto merge of #136647 - marcoieni:ubuntu-22-free-runner-arm, r=Kobzol
ci: use ubuntu 22 for free arm runners

try-job: aarch64-gnu
try-job: aarch64-gnu-debug
2025-02-07 10:51:26 +00:00
bors 550e035a59 Auto merge of #136450 - compiler-errors:simplify-cast, r=saethlin
Don't reset cast kind without also updating the operand in `simplify_cast` in GVN

Consider this heavily elided segment of the pre-GVN example code that was committed as a test:

```rust
          let _4: *const ();
          let _5: *const [()];
          let mut _6: *const ();
          let _7: *mut ();
          let mut _8: *const [()];
          let mut _9: std::boxed::Box<()>;
          let mut _10: *const ();
          /* ... */
          // Deref a box
          _10 = copy ((_9.0: std::ptr::Unique<()>).0: std::ptr::NonNull<()>) as *const () (Transmute);
          _4 = copy _10;
          _6 = copy _4;
          // Inlined body of `slice::from_raw_parts`, to turn a unit pointer into a slice-of-unit pointer
          _5 = *const [()] from (copy _6, copy _11);
          _8 = copy _5;
          // Cast the raw slice-of-unit pointer back to a unit pointer
          _7 = copy _8 as *mut () (PtrToPtr);
```

A malformed optimization was changing `_7` (which casted the slice-of-unit ptr to a unit ptr) to:

```
          _7 = copy _5 as *mut () (Transmute);
```

...where `_8` was just replaced with `_5` bc of simple copy propagation, that part is not important... the CastKind changing to Transmute is the important part here.

In #133324, two new functionalities were implemented:
* Peeking through unsized -> sized PtrToPtr casts whose operand is `AggregateKind::RawPtr`, to turn it into PtrToPtr casts of the base of the aggregate. In this case, this allows us to see that the value of `_7` is just a ptr-to-ptr cast of `_6`.
* Folding a PtrToPtr cast of an operand which is a Transmute cast into just a single Transmute, which (theoretically) allows us to treat `_7` as a transmute into `*mut ()` of the base of the cast of `_10`, which is the place projection of `((_9.0: std::ptr::Unique<()>).0: std::ptr::NonNull<()>)`.

However, when applying those two subsequent optimizations, we must *not* update the CastKind of the final cast *unless* we also update the operand of the cast, since the operand may no longer make sense with the updated CastKind.

In this case, this is problematic because the type of `_8` is `*const [()]`, but that operand in assignment statement of `_7` does *not* get turned into something like `((_9.0: std::ptr::Unique<()>).0: std::ptr::NonNull<()>)` -- **in other words, `try_to_operand` fails** -- because GVN only turns value nodes into locals or consts, not projections of locals. So we fail to update the operand, but we still update the CastKind to Transmute, which means we now are transmuting types of different sizes (a wide pointer and a thin pointer).

r? `@scottmcm` or `@cjgillot`

Fixes #136361
Fixes #135997
2025-02-07 06:26:41 +00:00
bors f37c19062c Auto merge of #136658 - matthiaskrgr:rollup-tg1vmex, r=matthiaskrgr
Rollup of 7 pull requests

Successful merges:

 - #133925 (disallow `repr()` on invalid items)
 - #136069 (Simplify slice indexing in next trait solver)
 - #136152 (Stabilize `map_many_mut` feature)
 - #136219 (Misc. `rustc_hir` cleanups 🧹)
 - #136580 (Couple of changes to run rustc in miri)
 - #136636 (Couple of minor cleanups to the diagnostic infrastructure)
 - #136645 (Clippy subtree update)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-02-07 03:36:38 +00:00
Waffle Lapkin 491599569c allow+update deref_into_dyn_supertrait
this commit makes `deref_into_dyn_supertrait` lint allow-by-default,
removes future incompatibility (we finally live in a broken world), and
changes the wording in the documentation.

previously documentation erroneously said that it lints against *usage*
of the deref impl, while it actually (since 104742) lints on the impl
itself (oooops, my oversight, should have updated it 2+ years ago...)
2025-02-06 23:44:24 +01:00
Waffle Lapkin bc1d68e389 adjust a comment
We can't remove `TraitUpcasting` variant, since we need to use the index
in winnowing.
2025-02-06 23:44:24 +01:00
Waffle Lapkin fd945425d1 remove use of feature(trait_upcasting) from miri 2025-02-06 23:44:23 +01:00
Waffle Lapkin 3c94d3e60f remove use of feature(trait_upcasting) from core tests 2025-02-06 23:44:23 +01:00
Waffle Lapkin 9e6d0b3700 remove unstable book entry for feature(trait_upcasting) 2025-02-06 23:44:23 +01:00
Waffle Lapkin e9d5d1113f remove feature(trait_upcasting) from tests and bless them 2025-02-06 23:44:23 +01:00
Waffle Lapkin a970a0d77e change deref_into_dyn_supertrait lint wording
(so that it doesn't talk about trait upcasting stabilization in the
future tense)
2025-02-06 23:30:23 +01:00
Waffle Lapkin da9a85a1a6 stabilize feature(trait_upcasting) 2025-02-06 23:30:23 +01:00
Esteban Küber 3815ed63ed Remove some unnecessary parens in assert! conditions
While working on #122661, some of these started triggering our "unnecessary parens" lints due to a change in the `assert!` desugaring. A cursory search identified a few more. Some of these have been carried from before 1.0, were a bulk rename from the previous name of `assert!` left them in that state. I went and removed as many of these unnecessary parens as possible in order to have fewer annoyances in the future if we make the lint smarter.
2025-02-06 22:28:44 +00:00
Matthias Krüger b1be2d5494 Rollup merge of #136645 - flip1995:clippy-subtree-update, r=Manishearth
Clippy subtree update

r? `@Manishearth`
2025-02-06 21:56:28 +01:00
Matthias Krüger 79e5424e31 Rollup merge of #136636 - bjorn3:error_cleanup, r=compiler-errors
Couple of minor cleanups to the diagnostic infrastructure
2025-02-06 21:56:28 +01:00
Matthias Krüger 3eb1ef836e Rollup merge of #136580 - bjorn3:miri_fixes, r=lqd
Couple of changes to run rustc in miri

This is not the full set of patches required to run rustc in miri, but it is the fast majority of the changes to rustc itself. There is also a change to the jobserver crate necessary and on arm64 a change to the memchr crate. Running rustc in miri has already found some UB: https://github.com/rust-lang/rust/pull/136579

cc https://github.com/rust-lang/rust/issues/135870#issuecomment-2612470540
2025-02-06 21:56:27 +01:00
Matthias Krüger 3e54c2eb75 Rollup merge of #136219 - yotamofek:pr/hir-cleanup, r=compiler-errors
Misc. `rustc_hir` cleanups 🧹

Each commit stands on its own, but I think all of them make the code a bit cleaner
2025-02-06 21:56:26 +01:00
Matthias Krüger 0fb72ee57c Rollup merge of #136152 - Urgau:stabilize-map_many_mut, r=joshtriplett
Stabilize `map_many_mut` feature

This PR stabilize `HashMap::get_many_mut` as `HashMap::get_disjoint_mut` and `HashMap::get_many_unchecked_mut` as `HashMap::get_disjoint_unchecked_mut` per FCP.

FCP at https://github.com/rust-lang/rust/issues/97601#issuecomment-2532710423
Fixes #97601
r? libs
2025-02-06 21:56:26 +01:00
Matthias Krüger ae1410e2d8 Rollup merge of #136069 - yotamofek:next-solver-slice, r=compiler-errors
Simplify slice indexing in next trait solver

Unless I'm missing something:
- no need to explicitly specify the end of the slice as the end of the index range
- the `assert` is redundant since the indexing will panic for the same condition

I think this change simplifies it a bit. Also replaced the `for` loop of `push`es with a call to `extend` with an iterator. Might improve performance since it knows how many elements will be added beforehand and can pre-reserve room?

r? `@compiler-errors` , I think
2025-02-06 21:56:25 +01:00
Matthias Krüger 4b7e55ada3 Rollup merge of #133925 - folkertdev:improve-repr-warnings, r=compiler-errors
disallow `repr()` on invalid items

fixes https://github.com/rust-lang/rust/issues/129606
fixes https://github.com/rust-lang/rust/issues/132391

Disallows `repr()` (so a repr with no arguments) on items where that won't ever make sense.

Also this generates an error when `repr` is used on a trait method and the `fn_align` feature is not enabled. Looks like that was missed here:

https://github.com/rust-lang/rust/pull/110313/files

Which first accepts the align attribute on trait methods.

r? `@compiler-errors`

cc `@jdonszelmann` who claimed https://github.com/rust-lang/rust/issues/132391 and generally has been working on attributes
2025-02-06 21:56:24 +01:00
Waffle Lapkin 992e3b4f03 fix tail call checks wrt #[track_caller]
only check the caller + disallow caller having the attr.
2025-02-06 21:06:51 +01:00
Michael Goulet de7d4a840e Don't reset cast kind without also updating the operand in simplify_cast 2025-02-06 18:39:35 +00:00
Michael Goulet c215e80aa9 Failing test 2025-02-06 18:36:02 +00:00
bjorn3 b9b2c3affc Stop passing the same resource multiple times when building ParseSess 2025-02-06 17:30:10 +00:00
bjorn3 8a0adec05b Avoid manually producing FatalError in a couple of places 2025-02-06 17:29:15 +00:00
bjorn3 9a833de62a Construct DiagCtxt a bit earlier in build_session 2025-02-06 17:29:15 +00:00
bors 942db6782f Auto merge of #136641 - matthiaskrgr:rollup-lajwje5, r=matthiaskrgr
Rollup of 7 pull requests

Successful merges:

 - #136073 (Always compute coroutine layout for eagerly emitting recursive layout errors)
 - #136235 (Pretty print pattern type values with transmute if they don't satisfy their pattern)
 - #136311 (Ensure that we never try to monomorphize the upcasting or vtable calls of impossible dyn types)
 - #136315 (Use short ty string for binop and unop errors)
 - #136393 (Fix accidentally not emitting overflowing literals lints anymore in patterns)
 - #136435 (Simplify some code for lowering THIR patterns)
 - #136630 (Change two std process tests to not output to std{out,err}, and fix test suite stat reset in bootstrap CI test rendering)

r? `@ghost`
`@rustbot` modify labels: rollup

try-job: aarch64-gnu-debug
2025-02-06 17:08:45 +00:00
MarcoIeni 6021598446 ci: use ubuntu 22 for free arm runners 2025-02-06 18:06:42 +01:00
bors 79f82ad5e8 Auto merge of #136585 - gvozdvmozgu:memchr-eat-until-lexer, r=lcnr
implement `eat_until` leveraging memchr in lexer
2025-02-06 14:19:30 +00:00
Philipp Krones daa82a188c Merge commit '3e3715c31236bff56f1c63a1de2c7bbdfcfb0923' into clippy-subtree-update 2025-02-06 15:00:24 +01:00
Philipp Krones 3e3715c312 Rustup (#14163)
r? @ghost

changelog: none
2025-02-06 13:48:29 +00:00
Guillaume Gomez f0966d20ad Add rustc_hir_pretty::item_to_string function 2025-02-06 14:45:28 +01:00
Jonathan Dönszelmann 14fb5efb2b ping me for attribute-related changes 2025-02-06 14:31:41 +01:00
Philipp Krones 9f31768adc Bump nightly version -> 2025-02-06 2025-02-06 14:31:22 +01:00
Philipp Krones f549562b81 Merge remote-tracking branch 'upstream/master' into rustup 2025-02-06 14:31:01 +01:00
Matthias Krüger 5b224253c1 Rollup merge of #136630 - jieyouxu:render_tests, r=ChrisDenton
Change two std process tests to not output to std{out,err}, and fix test suite stat reset in bootstrap CI test rendering

I don't really know how to test if this unbreaks CI (since #136607 reported that this breaks the CI test rendering *sometimes*).

Fixes #136607.

r? `@ChrisDenton` (two Windows process tests, but feel free to reroll)
2025-02-06 13:10:05 +01:00
Matthias Krüger c9635e51b5 Rollup merge of #136435 - Zalathar:thir-pat-stuff, r=Nadrieril
Simplify some code for lowering THIR patterns

I've been playing around with some radically different ways of storing THIR patterns, and while those experiments haven't yet produced a clear win, I have noticed various smaller things in the existing code that can be made a bit nicer.

Some of the more significant changes:
- With a little bit of extra effort (and thoughtful use of Arc), we can completely remove an entire layer of `'pat` lifetimes from the intermediate data structures used for match lowering.
- In several places, lists of THIR patterns were being double-boxed for no apparent reason.
2025-02-06 13:10:00 +01:00