Commit graph

32507 commits

Author SHA1 Message Date
Ralf Jung
c858ce132f make no-variant types a dedicated Variants variant 2024-12-18 11:01:54 +01:00
Ralf Jung
d7d08ae95c Variants::Single: do not use invalid VariantIdx for uninhabited enums 2024-12-18 11:00:21 +01:00
bors
9321f7efa9 Auto merge of #134376 - jdonszelmann:fix-rustdoc-perf, r=jieyouxu
Try to fix perf regression in rustdoc after hir attributes

Slight performance regression introduced in #131808

r? `@jieyouxu`
2024-12-17 21:34:13 +00:00
bors
e301414581 Auto merge of #134381 - jdonszelmann:move-attribute-types, r=oli-obk
Split up attribute parsing code and move data types to `rustc_attr_data_structures`

This change renames `rustc_attr` to `rustc_attr_parsing`, and splits up the parsing code. At the same time, all the data types used move to `rustc_attr_data_structures`. This is in preparation of also having a third crate: `rustc_attr_validation`

I initially envisioned this as two separate PRs, but I think doing it in one go reduces the number of ways others would have to rebase their changes on this. However, I can still split them.

r? `@oli-obk` (we already discussed how this is a first step in a larger plan)

For a more detailed plan on how attributes are going to change, see https://github.com/rust-lang/rust/issues/131229

Edit: this looks like a giant PR, but the changes are actually rather trivial. Each commit is reviewable on its own, and mostly moves code around. No new logic is added.
2024-12-17 18:50:50 +00:00
bors
a9740c92b9 Auto merge of #130766 - clarfonthey:stable-coverage-attribute, r=wesleywiser
Stabilize #[coverage] attribute

Closes #84605, which passed FCP.

Stabilisation report here: https://github.com/rust-lang/rust/issues/84605#issuecomment-2166514660

Also added to reference here: rust-lang/reference#1628

---

try-job: aarch64-apple
try-job: x86_64-gnu
try-job: x86_64-msvc
2024-12-17 15:56:58 +00:00
bors
8a1d610714 Auto merge of #134302 - bjorn3:remove_driver_queries, r=oli-obk,jieyouxu
Remove queries from the driver interface

All uses of driver queries in the public api of rustc_driver have been removed in https://github.com/rust-lang/rust/pull/134130 already. This removes driver queries from rustc_interface and does a couple of cleanups around TyCtxt construction and entering enabled by this removal.

Finishes the removal of driver queries started with https://github.com/rust-lang/rust/pull/126834.
2024-12-17 04:57:40 +00:00
ltdk
c180e41198 Stabilize #[coverage] attribute 2024-12-16 21:07:06 -05:00
bors
30533cfafb Auto merge of #134132 - MarcoIeni:linux-4c-to-ubuntu-22, r=Kobzol
CI: update linux 4c from ubuntu 20 to ubuntu 22
2024-12-17 01:49:31 +00:00
bors
3fb7f64534 Auto merge of #134095 - Kobzol:datadog-lockfile, r=MarcoIeni
[CI] Use a lockfile for installing the `datadog` package

Without a lockfile, it could fail to compile when the dependencies have changed. Reported [here](https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/CI.20failure.20in.20DataDog.20upload).

r? `@jdno`

try-job: x86_64-msvc-ext2
2024-12-16 23:07:24 +00:00
bors
056cb60f90 Auto merge of #134377 - lnicola:sync-from-ra, r=lnicola
Subtree update of `rust-analyzer`

r? `@ghost`
2024-12-16 13:07:24 +00:00
Laurențiu Nicola
27e824fad4
Merge pull request #18693 from Veykril/push-wzoomkkmuolm
fix: Fix proc-macro dylib names on windows
2024-12-15 18:32:38 +00:00
Lukas Wirth
30311ec890
Merge pull request #18694 from Veykril/push-uxpuruvqpwmx
internal: Show mir eval errors on hover with debug env var set
2024-12-15 16:51:17 +00:00
Lukas Wirth
6c6779e6f0 fix: Fix proc-macro dylib names on windows 2024-12-15 17:38:44 +01:00
Lukas Wirth
15239f612d internal: Show mir eval errors on hover with debug env var set 2024-12-15 17:38:37 +01:00
bors
7d145ebffa Auto merge of #133223 - zachs18:uniquerc-impls, r=Noratrieb
`UniqueRc` trait impls

UniqueRc tracking Issue: #112566

Stable traits: (i.e. impls behind only the `unique_rc_arc` feature gate)

* Support the same formatting as `Rc`:
  * `fmt::Debug` and `fmt::Display` delegate to the pointee.
  * `fmt::Pointer` prints the address of the pointee.
* Add explicit `!Send` and `!Sync` impls, to mirror `Rc`.
* Borrowing traits: `Borrow`, `BorrowMut`, `AsRef`, `AsMut`
  * `Rc` does not implement `BorrowMut` and `AsMut`, but `UniqueRc` can.
* Unconditional `Unpin`, like other heap-allocated types.
* Comparison traits `(Partial)Ord` and `(Partial)Eq` delegate to the pointees.
  * `PartialEq for UniqueRc` does not do `Rc`'s specialization shortcut for pointer equality when `T: Eq`, since by definition two `UniqueRc`s cannot share an allocation.
* `Hash` delegates to the pointee.
* `AsRawFd`, `AsFd`, `AsHandle`, `AsSocket` delegate to the pointee like `Rc`.
  * Sidenote: The bounds on `T` for the existing `Pointer<T>` impls for specifically `AsRawFd` and `AsSocket` do not allow `T: ?Sized`. For the added `UniqueRc` impls I allowed `T: ?Sized` for all four traits, but I did not change the existing (stable) impls.

Unstable traits:
* `DispatchFromDyn`, allows using `UniqueRc<Self>` as a method receiver under `feature(arbitrary_self_types)`.
* Existing `PinCoerceUnsized for UniqueRc` is generalized to allow non-`Global` allocators, like `Rc`.
* `DerefPure`, allows using `UniqueRc` in deref-patterns under `feature(deref_patterns)`, like `Rc`.

For documentation, `Rc` only has documentation on the comparison traits' methods, so I copied/adapted the documentation for those, and left the rest without impl-specific docs.

~~Edit: Marked as draft while I figure out `UnwindSafe`.~~
Edit: Ignoring `UnwindSafe` for this PR
2024-12-15 08:26:19 +00:00
bors
db94f76b49 Auto merge of #133734 - scottmcm:lower-indexing-to-ptrmetadata, r=davidtwco,RalfJung
Bounds-check with PtrMetadata instead of Len in MIR

Rather than emitting `Len(*_n)` in array index bounds checks, emit `PtrMetadata(copy _n)` instead -- with some asterisks for arrays and `&mut` that need it to be done slightly differently.

We're getting pretty close to removing `Len` entirely, actually.  I think just one more PR after this (for slice drop shims).

r? mir
2024-12-14 22:43:39 +00:00
Laurențiu Nicola
fc18d263aa
Merge pull request #18684 from Giga-Bowser/revert-client-changes
fix: Revert changes to client capabilities in `bac0ed5`
2024-12-13 20:30:33 +00:00
bors
ecf35e081a Auto merge of #133099 - RalfJung:forbidden-hardfloat-features, r=workingjubilee
forbid toggling x87 and fpregs on hard-float targets

Part of https://github.com/rust-lang/rust/issues/116344, follow-up to https://github.com/rust-lang/rust/pull/129884:

The `x87`  target feature on x86 and the `fpregs` target feature on ARM must not be disabled on a hardfloat target, as that would change the float ABI. However, *enabling* `fpregs` on ARM is [explicitly requested](https://github.com/rust-lang/rust/issues/130988) as it seems to be useful. Therefore, we need to refine the distinction of "forbidden" target features and "allowed" target features: all (un)stable target features can determine on a per-target basis whether they should be allowed to be toggled or not. `fpregs` then checks whether the current target has the `soft-float` feature, and if yes, `fpregs` is permitted -- otherwise, it is not. (Same for `x87` on x86).

Also fixes https://github.com/rust-lang/rust/issues/132351. Since `fpregs` and `x87` can be enabled on some builds and disabled on others, it would make sense that one can query it via `cfg`. Therefore, I made them behave in `cfg` like any other unstable target feature.

The first commit prepares the infrastructure, but does not change behavior. The second commit then wires up `fpregs` and `x87` with that new infrastructure.

r? `@workingjubilee`
2024-12-13 19:43:00 +00:00
Giga Bowser
0900b6d428 fix: Revert changes to client capabilities in bac0ed5 2024-12-13 11:59:50 -05:00
bors
c6288abd92 Auto merge of #134122 - oli-obk:push-zqnyznxtpnll, r=petrochenkov
Move impl constness into impl trait header

This PR is kind of the opposite of the rejected https://github.com/rust-lang/rust/pull/134114

Instead of moving more things into the `constness` query, we want to keep them where their corresponding hir nodes are lowered. So I gave this a spin for impls, which have an obvious place to be (the impl trait header). And surprisingly it's also a perf improvement (likely just slightly better query & cache usage).

The issue was that removing anything from the `constness` query makes it just return `NotConst`, which is wrong. So I had to change it to `bug!` out if used wrongly, and only then remove the impl blocks from the `constness` query. I think this change is good in general, because it makes using `constness` more robust (as can be seen by how few sites that had to be changed, so it was almost solely used specifically for the purpose of asking for functions' constness). The main thing where this change was not great was in clippy, which was using the `constness` query as a general DefId -> constness map. I added a `DefKind` filter in front of that. If it becomes a more common pattern we can always move that helper into rustc.
2024-12-13 16:17:34 +00:00
bors
0dc2c87e48 Auto merge of #134047 - saethlin:inline-fmt-rt, r=m-ou-se
Switch inline(always) in core/src/fmt/rt.rs to plain inline

I have a vague memory of these being instantiated a lot. Let's ask perf.

Looks like this is an improvement!
2024-12-13 12:04:04 +00:00
Laurențiu Nicola
f50969b239
Merge pull request #18681 from lnicola/bump-typos
minor: Bump typos
2024-12-13 10:00:23 +00:00
Laurențiu Nicola
dc978a976f Bump typos 2024-12-13 11:45:44 +02:00
Laurențiu Nicola
405f01ac3f
Merge pull request #18678 from regexident/fix-typos
minor: Fix a few typos
2024-12-13 09:09:33 +00:00
Vincent Esche
3d4f10a856 Fix a few typos 2024-12-13 09:54:35 +01:00
Lukas Wirth
6aadbae022
Merge pull request #18674 from Veykril/push-lrxotqknvxvr
Show expansion errors in expand_macro feature
2024-12-13 08:50:45 +00:00
Lukas Wirth
7ce807bf4d
Merge pull request #18672 from Veykril/push-lurnqpqtzvzq
internal: Do not require a special env var to be set for the proc-macro-srv
2024-12-13 08:43:33 +00:00
Lukas Wirth
28fbecff42 Show expansion errors in expand_macro feature 2024-12-13 09:36:03 +01:00
bors
7ef657f73d Auto merge of #133899 - scottmcm:strip-mir-debuginfo, r=oli-obk
We don't need `NonNull::as_ptr` debuginfo

In order to stop pessimizing the use of local variables in core, skip debug info for MIR temporaries in tiny (single-BB) functions.

For functions as simple as this -- `Pin::new`, etc -- nobody every actually wants debuginfo for them in the first place.  They're more like intrinsics than real functions, and stepping over them is good.
2024-12-13 08:32:20 +00:00
Lukas Wirth
a5adfafd93 Do not require a special env var to be set for the proc-macro-srv 2024-12-13 09:29:16 +01:00
bors
4839571ddc Auto merge of #132961 - adetaylor:arbitrary-self-types-the-big-bit, r=compiler-errors,wesleywiser
Arbitrary self types v2: main compiler changes

This is the main PR in a series of PRs related to Arbitrary Self Types v2, tracked in #44874. Specifically this is step 7 of the plan [described here](https://github.com/rust-lang/rust/issues/44874#issuecomment-2122179688), for [RFC 3519](https://github.com/rust-lang/rfcs/pull/3519).

Overall this PR:
* Switches from the `Deref` trait to the new `Receiver` trait when the unstable `arbitrary_self_types` feature is enabled (the simple bit)
* Introduces new algorithms to spot "shadowing"; that is, the case where a newly-added method in an outer smart pointer might end up overriding a pre-existing method in the pointee (the complex bit). Most of this bit was explored in [this earlier perf-testing PR](https://github.com/rust-lang/rust/pull/127812#issuecomment-2236911900).
* Lots of tests

This should not break compatibility for:
* Stable users, where it should have no effect
* Users of the existing `arbitrary_self_types` feature (because we implement `Receiver` for `T: Deref`) _unless_ those folks have added methods which may shadow methods in inner types, which we no longer want to allow

Subsequent PRs will add better diagnostics.

It's probably easiest to review this commit-by-commit.

r? `@wesleywiser`
2024-12-12 21:40:39 +00:00
Lukas Wirth
9b2e72c404
Merge pull request #18677 from Veykril/push-uumpxklsqpzk
internal: Implement `naked_asm!` builtin
2024-12-12 16:58:26 +00:00
Lukas Wirth
f748eb510e internal: Implement naked_asm! builtin 2024-12-12 17:43:27 +01:00
Lukas Wirth
cde07f29c9
Merge pull request #18675 from ShoyuVanilla/issue-18664
fix: Panic when displaying generic params with defaults, again
2024-12-12 16:37:10 +00:00
Shoyu Vanilla
94ec3fe7ed fix: Panic when displaying generic params with defaults, again 2024-12-13 01:15:41 +09:00
bors
d5708aad45 Auto merge of #132789 - matthiaskrgr:debug_tests, r=jieyouxu
add some debug-assertion crash tests

r? ghost

try-job: x86_64-gnu
2024-12-12 16:08:06 +00:00
Lukas Wirth
0ae381327b
Merge pull request #18671 from p-hofer/master
Fix typo in error message for invalid casting
2024-12-12 14:58:26 +00:00
Philipp Hofer
04ac6f8405 Fix typo in error message for invalid casting
Corrected the spelling of "defererence" to "dereference" in the error message that informs users about invalid casting requirements.
2024-12-12 15:42:21 +01:00
Lukas Wirth
acd469681f
Merge pull request #18670 from Veykril/push-ylomnylswnxm
internal: Drop proc-macro server support for ~1.66.0 and older toolchains
2024-12-12 14:19:07 +00:00
Lukas Wirth
f0b5b8333d internal: Drop proc-macro server support for ~1.66.0 and older toolchains 2024-12-12 15:06:14 +01:00
Lukas Wirth
a6c291ed07
Merge pull request #18652 from Giga-Bowser/extract-constant
feat: Add an assist to extract an expression into a constant
2024-12-12 13:22:05 +00:00
Lukas Wirth
3bd459767c
Merge pull request #18669 from Veykril/push-qqkuxtvsmsut
internal: Only parse the object file once in proc-macro-srv
2024-12-12 12:46:29 +00:00
Lukas Wirth
8a86fa01ac Fix clippy lints in proc-macro-srv 2024-12-12 13:30:42 +01:00
Lukas Wirth
c9314d4aff Only parse the object file once 2024-12-12 13:23:25 +01:00
Lukas Wirth
096e3e55e3
Merge pull request #18668 from Veykril/push-tpkmsyllunqv
fix: Fix sourceroot construction for virtual manifests
2024-12-12 12:13:48 +00:00
Lukas Wirth
a8efb137a1
Merge pull request #18660 from Veykril/push-snumrtvzwqvw
fix: copied proc-macros not being cleaned up on exit
2024-12-12 12:09:41 +00:00
bors
e4c861005c Auto merge of #134199 - RalfJung:gitmerge, r=oli-obk
Revert "Stop git from merging generated files"

This reverts https://github.com/rust-lang/rust/pull/133851. "-merge" makes git not even do merges if they are entirely conflict-free, which is not the behavior we want. We sometimes have conflict-free merges in generated files and it's much better if git can handle them automatically.

r? `@oli-obk`
Cc `@jieyouxu` `@Urgau`
2024-12-12 12:02:38 +00:00
Lukas Wirth
ab46e97188 fix: Fix sourceroot construction for virtual manifests 2024-12-12 12:58:18 +01:00
Lukas Wirth
8ffa5ecb76
Merge pull request #18667 from 1hakusai1/generate_custom_imple_with_no_snippet
fix: Generate implementation with items even if snippet text edit is disabled
2024-12-12 10:51:44 +00:00
1hakusai1
fc2b70132f Generate implementation with items even if snippet text edit is disabled 2024-12-12 18:55:14 +09:00