Commit graph

290533 commits

Author SHA1 Message Date
Ell
a6a1c1b247 Separately check equality of the scalar types and compound types in the order of declaration. 2025-06-02 15:29:34 +03:00
bors
ebe9b00602 Auto merge of #141693 - lnicola:sync-from-ra, r=lnicola
Subtree update of `rust-analyzer`

r? `@ghost`
2025-05-28 23:05:24 +00:00
bors
6f69710780 Auto merge of #141696 - tgross35:rollup-fhpj180, r=tgross35
Rollup of 7 pull requests

Successful merges:

 - rust-lang/rust#140369 (Add data_ptr method to Mutex and RwLock)
 - rust-lang/rust#140697 (Split `autodiff` into `autodiff_forward` and `autodiff_reverse`)
 - rust-lang/rust#141404 (Improve intrinsic handling in cg_ssa)
 - rust-lang/rust#141411 (rustdoc: linking to a local proc macro no longer warns)
 - rust-lang/rust#141548 (consider glob imports in cfg suggestion)
 - rust-lang/rust#141627 (Drop-build cleanups)
 - rust-lang/rust#141670 (Fix ICE in tokenstream with contracts from parser recovery)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-05-28 17:32:45 +00:00
Trevor Gross
d6b1108cda
Rollup merge of #141670 - chenyukang:yukang-fix-ice-from-contracts, r=nnethercote
Fix ICE in tokenstream with contracts from parser recovery

Fixes rust-lang/rust#140683

After two times of parsing error, the `recover_stmt_` constructs an error ast, then when we expand macors, the invalid tokenstream triggered ICE because of mismatched delims.

Expected `{` and get other tokens is an obvious error message, too much effort on recovery may introduce noise.

r? ```@nnethercote```
2025-05-28 10:28:11 -04:00
Trevor Gross
97f6e6e8ba
Rollup merge of #141627 - nnethercote:drop-cleanups, r=matthewjasper
Drop-build cleanups

Some cleanups I made while trying to speed up the program in rust-lang/rust#134404.

r? ```@matthewjasper```
2025-05-28 10:28:11 -04:00
Trevor Gross
ae952460d3
Rollup merge of #141548 - bvanjoi:issue-141256, r=petrochenkov
consider glob imports in cfg suggestion

Fixes rust-lang/rust#141256

r? ```@petrochenkov```
2025-05-28 10:28:10 -04:00
Trevor Gross
77c7f76297
Rollup merge of #141411 - lolbinarycat:rustdoc-link-proc-macro-91274, r=GuillaumeGomez
rustdoc: linking to a local proc macro no longer warns

fixes https://github.com/rust-lang/rust/issues/91274

tried to keep the fix general in case we ever have any other kind of item that occupies
multiple namespaces simultaniously.
2025-05-28 10:28:09 -04:00
Trevor Gross
1ead0a5ef3
Rollup merge of #141404 - bjorn3:refactor_cg_ssa_call_codegen, r=davidtwco
Improve intrinsic handling in cg_ssa

* Move all intrinsic handling code to the start of `codegen_call_terminator`.
* Push some intrinsic handling code into `codegen_intrinsic_call`.
* Don't depend on FnAbi for intrinsics.
2025-05-28 10:28:09 -04:00
Trevor Gross
7f5f29b663
Rollup merge of #140697 - Sa4dUs:split-autodiff, r=ZuseZ4
Split `autodiff` into `autodiff_forward` and `autodiff_reverse`

This PR splits `#[autodiff]` macro so `#[autodiff(df, Reverse, args)]` would become `#[autodiff_reverse(df, args)]` and `#[autodiff(df, Forward, args)]` would become `#[autodiff_forwad(df, args)]`.
2025-05-28 10:28:08 -04:00
Trevor Gross
5f17779a03
Rollup merge of #140369 - jplatte:mutex-rwlock-data-ptr, r=Amanieu
Add data_ptr method to Mutex and RwLock

Implementation of https://github.com/rust-lang/rust/issues/140368 / https://github.com/rust-lang/libs-team/issues/531.

I tried to write a useful safety section about when it is safe to read or write through the returned pointers, but couldn't come up with something nice. Hoping this PR is still useful without that. I'm happy to add any doc strings other people come up with if needed before merge, of course.

Unresolved questions:

- Return a `LockResult` or not?
- Return `*mut T` like existing APIs (`Cell::as_ptr` / `MaybeUninit::as[_mut]_ptr` / `Vec::as_ptr` / ...) or be more precise and return `NonNull<T>`?
2025-05-28 10:28:07 -04:00
bors
40311c4dcf Auto merge of #141576 - marcoieni:pr-free-runners-aarch, r=Kobzol
ci: move tests from x86_64-gnu-llvm-19 job to aarch64
2025-05-28 14:20:52 +00:00
Lukas Wirth
d08ab512dd
Merge pull request #19881 from Veykril/push-wsrmttkymyps
feat: Desugar assist for `let pat = expr?;` -> `let else`
2025-05-28 09:23:27 +00:00
Lukas Wirth
8231d888cf feat: Desugar assist for let pat = expr?; -> let else 2025-05-28 11:12:28 +02:00
bors
77101febcc Auto merge of #141501 - marcoieni:dist-x86_64-linux-codebuild-again, r=Kobzol
ci: move dist-x86_64-linux job to codebuild
2025-05-28 08:58:49 +00:00
Lukas Wirth
c205ef756d
Merge pull request #19880 from Veykril/push-xmpxumsrkymk
fix: Handle included files better in IDE layer
2025-05-28 08:49:42 +00:00
Lukas Wirth
035cf40337
Merge pull request #19872 from ChayimFriedman2/async-fn-output
fix: Fix inference of `AsyncFnX` return type
2025-05-28 08:39:14 +00:00
Lukas Wirth
457e84f4d8 fix: Handle included files better in IDE layer
This does not fully fix things, but it introduces a function that can be used to fix occurences.
When using `to_def` functionality, the input node needs to come from the macro expanded include, not the real file that was included.
This does unfortunately add more caller burden, but there is not really a way around it.
2025-05-28 10:38:38 +02:00
Lukas Wirth
fa22119b38
Merge pull request #19876 from ShoyuVanilla/layout-padding
feat: Render padding information when hovering on structs
2025-05-28 08:16:38 +00:00
bors
cb678b94c3 Auto merge of #141375 - kraj:kraj/aarch64-musl, r=Mark-Simulacrum
Disable libunwind cross-architecture unwinding

Building with _LIBUNWIND_IS_NATIVE_ONLY disables code for cross-architecture unwinding It also enables some additional code that handles PAC-specific unwind info it helps compiling with the -mbranch-protection=pac or -mbranch-protection=standard flags

This fixes build with clang/musl on aarch64
2025-05-28 05:49:08 +00:00
Lukas Wirth
7840bc0ea1
Merge pull request #19879 from Veykril/push-mqykxnqtktuw
fix: Fix IDE layer not resolving some macro calls
2025-05-28 05:20:02 +00:00
Shoyu Vanilla
636495cdec feat: Render padding information when hovering on structs 2025-05-28 14:18:50 +09:00
Lukas Wirth
7ec351ec7c Back out "Fix IDE resolution of item macros"
This backs out commit 3e0ab7219a5464999652beca22698cd46e1e48e8.
2025-05-28 07:09:21 +02:00
Lukas Wirth
711546a329 Drop unnecessay code 2025-05-28 07:05:55 +02:00
Lukas Wirth
cfe488c7a0 fix: Fix IDE layer not resolving some macro calls 2025-05-28 06:58:40 +02:00
Lukas Wirth
f67ee9c7de
Merge pull request #19877 from tgross35/remove-concat-idents
chore: Remove support for `concat_idents!`
2025-05-28 04:17:42 +00:00
Trevor Gross
9f94b13d7a chore: Remove support for concat_idents!
`concat_idents!` was deprecated in [1] and will be removed in the near
future. rust-analyzer's support is independent of rustc's, so drop RA
support now to make syncing easier.

[1]: https://github.com/rust-lang/rust/pull/137653
2025-05-28 03:59:32 +00:00
yukang
adcd0bf5c3 Fix ICE in tokenstream with contracts from parser recovery 2025-05-28 09:35:10 +08:00
bors
04a67d5a05 Auto merge of #141668 - tgross35:rollup-03gg6lf, r=tgross35
Rollup of 8 pull requests

Successful merges:

 - rust-lang/rust#140367 (add `asm_cfg`: `#[cfg(...)]` within `asm!`)
 - rust-lang/rust#140894 (Make check-cfg diagnostics work in `#[doc(cfg(..))]`)
 - rust-lang/rust#141252 (gvn: bail out unavoidable non-ssa locals in repeat)
 - rust-lang/rust#141517 (rustdoc: use descriptive tooltip if doctest is conditionally ignored)
 - rust-lang/rust#141551 (Make two transmute-related MIR lints into HIR lint)
 - rust-lang/rust#141591 (ci: fix llvm test coverage)
 - rust-lang/rust#141647 (Bump master `stage0` compiler)
 - rust-lang/rust#141659 (Add `Result::map_or_default` and `Option::map_or_default`)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-05-28 01:20:50 +00:00
Khem Raj
56b669cd7a
Disable libunwind cross-architecture unwinding
Building with _LIBUNWIND_IS_NATIVE_ONLY disables code for cross-architecture unwinding
it is disabled by default in LLVM [1], replicate the cmake behavior in bootstrap process

It also enables some additional code that handles PAC-specific unwind info
it helps compiling with the -mbranch-protection=pac or -mbranch-protection=standard flags

This fixes build with clang/musl on aarch64

[1] 85624c5de3

Signed-off-by: Khem Raj <raj.khem@gmail.com>
2025-05-27 18:07:20 -07:00
Trevor Gross
da61494400
Rollup merge of #141659 - tkr-sh:map-or-default, r=Amanieu
Add `Result::map_or_default` and `Option::map_or_default`

Closes: https://github.com/rust-lang/rust/pull/138068

_This PR has been recreated because of the inactivity of the author (Cf. https://github.com/rust-lang/rust/pull/138068#issuecomment-2912412288)_
2025-05-27 20:28:34 -04:00
Trevor Gross
f953c6dc66
Rollup merge of #141647 - jieyouxu:bump-master-stage0, r=pietroalbini
Bump master `stage0` compiler

To include beta backport of revert rust-lang/rust#141024 which should undo linker warnings during bootstrapping of Windows MSVC targets due to rust-lang/rust#140176.

Closes rust-lang/rust#141395.

r? `@Mark-Simulacrum` (or release)
2025-05-27 20:28:33 -04:00
Trevor Gross
77ddf1ac6b
Rollup merge of #141591 - marcoieni:fix-llvm-test-coverage, r=Kobzol
ci: fix llvm test coverage

try-job: x86_64-gnu-llvm-19-1
try-job: x86_64-gnu-llvm-20-1
2025-05-27 20:28:33 -04:00
Trevor Gross
e0278ed5af
Rollup merge of #141551 - compiler-errors:hir-lints, r=BoxyUwU
Make two transmute-related MIR lints into HIR lint

Make `PTR_TO_INTEGER_TRANSMUTE_IN_CONSTS` (rust-lang/rust#130540) and `UNNECESSARY_TRANSMUTES` (rust-lang/rust#136083) into "normal" HIR-based lints.

Funny enough this came up in the review of the latter (https://github.com/rust-lang/rust/pull/136083#issuecomment-2614301413), but I guess it just was overlooked.

But anywyas, there's no reason for these to be MIR lints; in fact, it makes the suggestions for them a bit more complicated than necessary.

Note that there's probably a few more simplifications and improvements to be done here. Follow-ups can be done in a separate PR, especially if they're about the messaging and suggestions themselves, which I didn't write.
2025-05-27 20:28:32 -04:00
Trevor Gross
a8c7a1e29b
Rollup merge of #141517 - lolbinarycat:rustdoc-doctest-tooltip-ignore-141092, r=notriddle
rustdoc: use descriptive tooltip if doctest is conditionally ignored

fixes https://github.com/rust-lang/rust/issues/141092

here's what it looks like now:
![screenshot](https://github.com/user-attachments/assets/71e679fe-8828-439d-a2ce-b9187ad3aeea)
2025-05-27 20:28:32 -04:00
Trevor Gross
ee4efa1f86
Rollup merge of #141252 - dianqk:gvn-repeat-index, r=saethlin
gvn: bail out unavoidable non-ssa locals in repeat

Fixes #141251.

We cannot transform `*elem` to `array[idx1]` in the following code, as `idx1` has already been modified.

```rust
    mir! {
        let array;
        let elem;
        {
            array = [*val; 5];
            elem = &array[idx1];
            idx1 = idx2;
            RET = *elem;
            Return()
        }
    }
```

Perhaps I could transform it to `array[0]`, but I prefer the conservative approach.

r? mir-opt
2025-05-27 20:28:31 -04:00
Trevor Gross
0c2fbe53a6
Rollup merge of #140894 - Urgau:check-cfg-rustdoc, r=GuillaumeGomez
Make check-cfg diagnostics work in `#[doc(cfg(..))]`

This PR makes it so that the check-cfg `unexpected_cfgs` lint, is correctly emitted in `rustdoc`'s `#[doc(cfg(..))]`.

This is achieved by adding a custom trait to `cfg_matches` (the method that emits the lint) which permits `rustc` and `rustdoc` to each have their way to emitting lints (via buffered lints/AST for `rustc` and via `TyCtxt`/HIR for `rustdoc`).

The reason this is required is because buffered lints operates on the AST but `rustdoc` uses the HIR and by the time `rustdoc` calls `cfg_matches` we are way passed the point where buffered lints have been drain and emitted.

Best reviewed commit by commit.

r? `@jieyouxu` (for the compiler part)
r? `@GuillaumeGomez` (for the rustdoc part)
2025-05-27 20:28:30 -04:00
Trevor Gross
743d2527a2
Rollup merge of #140367 - folkertdev:asm-cfg, r=nnethercote
add `asm_cfg`: `#[cfg(...)]` within `asm!`

tracking issue: https://github.com/rust-lang/rust/issues/140364
blocked on: https://github.com/rust-lang/rust/pull/140490

This feature was discussed in https://github.com/rust-lang/rust/issues/140279. It allows configuring templates and operands in the assembly macros, for example:

```rust
asm!( // or global_asm! or naked_asm!
    "nop",
    #[cfg(target_feature = "sse2")]
    "nop",
    // ...
    #[cfg(target_feature = "sse2")]
    a = const 123, // only used on sse2
);
```

r? `@tgross35`

cc `@traviscross` `@Amanieu`

Now builds on https://github.com/rust-lang/rust/pull/140490, which should be merged first.
2025-05-27 20:28:30 -04:00
Chayim Refael Friedman
2c5d840fb0
Merge pull request #19875 from ShoyuVanilla/issue-19844
fix: Skip pattern analysis on type mismatches
2025-05-27 23:38:38 +00:00
Shoyu Vanilla
a55a3705f6 fix: Skip pattern analysis on type mismatches 2025-05-28 08:11:14 +09:00
bors
be42293944 Auto merge of #129658 - saethlin:spare-a-crumb, r=jhpratt
Add some track_caller info to precondition panics

Currently, when you encounter a precondition check, you'll always get the caller location of the implementation of the precondition checks. But with this PR, you'll be told the location of the invalid call. Which is useful.

I thought of this while looking at https://github.com/rust-lang/rust/pull/129642#issuecomment-2311703898.

The changes to `tests/ui/const*` happen because the const-eval interpreter skips `#[track_caller]` frames in its backtraces.

The perf implications of this are:
* Increased debug binary sizes. The caller_location implementation requires that the additional data we want to display here be stored in const allocations, which are deduplicated but not across crates. There is no impact on optimized build sizes. The panic path and the caller location data get optimized out.
* The compile time hit to opt-incr-patched bitmaps happens because the patch changes the line number of some function calls with precondition checks, causing us to go from 0 dirty CGUs to 1 dirty CGU.
* The other compile time hits are marginal but real, and due to doing a handful of new queries. Adding more useful data isn't completely free.
2025-05-27 22:11:53 +00:00
bors
45f256d9d7 Auto merge of #141662 - matthiaskrgr:rollup-9kt4zj7, r=matthiaskrgr
Rollup of 8 pull requests

Successful merges:

 - rust-lang/rust#141312 (Add From<TryLockError> for io::Error)
 - rust-lang/rust#141495 (Rename `{GenericArg,Term}::unpack()` to `kind()`)
 - rust-lang/rust#141602 (triagebot: label LLVM submodule changes with `A-LLVM`)
 - rust-lang/rust#141632 (remove `visit_mt` from `ast::mut_visit`)
 - rust-lang/rust#141640 (test: convert version_check ui test to run-make)
 - rust-lang/rust#141645 (bump fluent-* crates)
 - rust-lang/rust#141650 (coverage: Revert "unused local file IDs" due to empty function names)
 - rust-lang/rust#141654 (tests: mark option-niche-eq as fixed on LLVM 21)

Failed merges:

 - rust-lang/rust#141430 (remove `visit_clobber` and move `DummyAstNode` to `rustc_expand`)
 - rust-lang/rust#141636 (avoid some usages of `&mut P<T>` in AST visitors)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-05-27 18:59:47 +00:00
Matthias Krüger
c7d0a61e22
Rollup merge of #141654 - durin42:randomly-fixed-test, r=jieyouxu
tests: mark option-niche-eq as fixed on LLVM 21

Some combination of recent Rust changes (between 3d86494a0d and aa57e46e24 from what I can tell) and changes in LLVM 21 (not recently, as best I can tell) have caused this test to start showing the behavior we want, so it's time to move this test to a proper place and mark it as fixed on LLVM 21.

~~Probably "fixes" rust-lang/rust#49892, but I'll let others make that call.~~

Closes rust-lang/rust#49892 unless we want to break out a dedicated issue for `Option<bool>::eq` on LLVM 20 (seems low-value).

`@rustbot` label llvm-main
2025-05-27 20:57:58 +02:00
Matthias Krüger
003fbf1fad
Rollup merge of #141650 - Zalathar:revert-unused-local-file, r=Zalathar
coverage: Revert "unused local file IDs" due to empty function names

The changes to coverage metadata generation in rust-lang/rust#140847 appear to be the most likely cause of the `function name is empty` errors reported in rust-lang/rust#141577.

If that guess is correct, great. If not, no big deal.

---

This reverts commit 3b22c21dd8, reversing changes made to 5f292eea6d.

r? ghost
2025-05-27 20:57:57 +02:00
Matthias Krüger
043e498062
Rollup merge of #141645 - klensy:fluent-b, r=jieyouxu
bump fluent-* crates

This bumps fluent-* crates, switching to more up-to-date deps, reducing number of old ones.

changelogs is pure refactoring:
https://github.com/projectfluent/fluent-rs/blob/fluent-bundle%400.16.0/fluent-bundle/CHANGELOG.md
https://github.com/projectfluent/fluent-rs/blob/fluent-bundle%400.16.0/fluent-syntax/CHANGELOG.md
2025-05-27 20:57:57 +02:00
Matthias Krüger
09e643f963
Rollup merge of #141640 - Fabian-Gruenbichler:mr/test-version-check-rpath-false, r=jieyouxu
test: convert version_check ui test to run-make

else it breaks with `rpath=false`.

Fixes: rust-lang/rust#141579
2025-05-27 20:57:56 +02:00
Matthias Krüger
7807f5f0cb
Rollup merge of #141632 - fee1-dead-contrib:push-txmttkxvwqxl, r=oli-obk
remove `visit_mt` from `ast::mut_visit`

doesn't look like anyone is using it.
2025-05-27 20:57:55 +02:00
Matthias Krüger
732f671c53
Rollup merge of #141602 - jieyouxu:llvm-submodule, r=apiraino
triagebot: label LLVM submodule changes with `A-LLVM`

Fixes rust-lang/rust#141601.

r? `@apiraino`
2025-05-27 20:57:55 +02:00
Matthias Krüger
16af814a4e
Rollup merge of #141495 - compiler-errors:rename-unpack, r=fmease
Rename `{GenericArg,Term}::unpack()` to `kind()`

A well-deserved rename IMO.

r? `@oli-obk` or `@lcnr` (or anyone)

cc `@rust-lang/types,` but I'd be surprised if this is controversial.
2025-05-27 20:57:54 +02:00
Matthias Krüger
88b12f3649
Rollup merge of #141312 - cberner:filelock_from, r=joshtriplett
Add From<TryLockError> for io::Error

Adds a `From` impl to make error propagation easier, as discussed in the tracking issue

`TryLockError` is unstable under the "file_lock" feature. The related tracking issue is https://github.com/rust-lang/rust/issues/130994

This PR also cleanups the Windows implementation of `try_lock()` and `try_lock_shared()` as [discussed here](https://github.com/rust-lang/rust/pull/140718#discussion_r2076678485)
2025-05-27 20:57:53 +02:00
tk
eed065958b feat: map_or_default for result and option 2025-05-27 19:47:14 +02:00