Commit graph

298901 commits

Author SHA1 Message Date
bors
27d6200a70 Auto merge of #140708 - GuillaumeGomez:rollup-egt3nl9, r=GuillaumeGomez
Rollup of 4 pull requests

Successful merges:

 - #136183 (Update iterator.rs to use arrays by value)
 - #139966 (coverage: Only merge adjacent coverage spans)
 - #140692 (Rename `graph::implementation::Graph` to `LinkedGraph`)
 - #140703 (Handle PR not found in post-merge workflow)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-05-06 18:40:50 +00:00
Manish Goregaokar
fc811f7e2e
item_name_repetitions: exclude enum variants with identical path components (#14619)
fix rust-lang/rust-clippy#13637

As suggested in the PR above, we should not lint enum variants
containing matching path names.

changelog: [`item_name_repetitions`]: exclude enum variants with
identical path components
2025-05-06 18:30:14 +00:00
Hayashi Mikihiro
627fedb423 extract function: doc_attributes to find def from inner doc
Signed-off-by: Hayashi Mikihiro <34ttrweoewiwe28@gmail.com>
2025-05-07 03:12:19 +09:00
Kivooeo
3c1c0726ad added error handle for error code > 9999 2025-05-06 23:02:47 +05:00
Madhav Madhusoodanan
c32dc2dbda Added apxf target feature test 2025-05-06 23:28:28 +05:30
Madhav Madhusoodanan
43357b4a64 Added apxf target feature support, under flag apx_target_feature 2025-05-06 23:28:27 +05:30
Michael Howell
e648e5b710 rustdoc: remove unportable markdown lint and old parser
Follow up https://github.com/rust-lang/rust/pull/127127
2025-05-06 10:33:04 -07:00
Guillaume Gomez
173cdafea6 Ensure that temporary doctest folder is correctly removed even if doctests failed 2025-05-06 19:32:20 +02:00
Guillaume Gomez
ee0d68fcab
Rollup merge of #140703 - Kobzol:post-merge-race-fix, r=marcoieni
Handle PR not found in post-merge workflow

Should hopefully fix errors like [these](https://github.com/rust-lang/rust/pull/140561#issuecomment-2854636223).

r? `@marcoieni`
2025-05-06 19:27:40 +02:00
Guillaume Gomez
74e5184f9b
Rollup merge of #140692 - Zalathar:linked-graph, r=wesleywiser
Rename `graph::implementation::Graph` to `LinkedGraph`

One of the more confusing parts of the `rustc_data_structures::graph` module is this mysteriously-named “Graph” type, which turns out to be an older standalone graph implementation that predates the traits used by the rest of the graph module.

This graph type is still used in a couple of places (for reporting certain lifetime errors, and by certain debugging/test-only checks of the query dependency graph), but hasn't had much attention in years.

This PR renames that old graph type from `implementation::Graph` to `linked_graph::LinkedGraph` to give it a more distinct identity (and make existing uses easier to find), and adds some notes to gently discourage any further use in new code.

No functional change.
2025-05-06 19:27:39 +02:00
Guillaume Gomez
3b82d4640a
Rollup merge of #139966 - Zalathar:span-merge, r=oli-obk
coverage: Only merge adjacent coverage spans

For a long time, coverage instrumentation has automatically “merged” spans with the same control-flow into a smaller number of larger spans, even when the spans being merged are not overlapping or adjacent. This causes any source text between the original spans to be included in the merged span, which is then associated with an execution count when shown in coverage reports.

That approach causes a number of problems:
- The intervening source text can contain all sorts of things that shouldn't really be marked as executable code (e.g. nested items, parts of macro invocations, long comments). In some cases we have complicated workarounds (e.g. bucketing to avoid merging spans across nested items), but in other cases there isn't much we can do.
- Merging can have aesthetically weird effects, such as including unbalanced parentheses, because the merging process doesn't really understand what it's doing at a source code level.
- It generally leads to an accumulation of piled-on heuristics and special cases that give decent-looking results, but are fiendishly difficult to modify or replace.

Therefore, this PR aims to abolish the merging of non-adjacent coverage spans.

The big tradeoff here is that the resulting coverage metadata (embedded in the instrumented binary) tends to become larger, because the overall number of distinct spans has increased. That's unfortunate, but I see it as the inevitable cost of cleaning up the messes and inaccuracies that were caused by the old approach. And the resulting spans do tend to be more accurate to the program's actual control-flow.

---

The `.coverage` snapshot changes give an indication of how this PR will affect user-visible coverage reports. In many cases the changes to reporting are minor or even nonexistent, despite substantial changes to the metadata (as indicated by `.cov-map` snapshots).

---

try-job: aarch64-gnu
2025-05-06 19:27:39 +02:00
Guillaume Gomez
8929f8a180
Rollup merge of #136183 - hkBst:patch-25, r=Amanieu
Update iterator.rs to use arrays by value

Update examples to no longer avoid iterating arrays for #84513
2025-05-06 19:27:38 +02:00
Samuel Tardieu
73dd05cc7a
add allow_unused config to missing_docs_in_private_items (#14453)
fixes #14413
add allow_unused config to missing_docs_in_private_items for underscored
field

changelog: [`missing_docs_in_private_items`]: add allow_unused config to
missing_docs_in_private_items for underscored field

Explaination (quoted from the issue's author): When writing structures
that must adhere to a specific format (such as memory mapped I/O
structures) there are inevitably fields that are "reserved" by
specifications and thus need no documentation. In cases where private
docs are preferred but reserved fields need no explanation, having to
#[allow/expect] this lint removes the ability to check for otherwise
used fields' documentation.
2025-05-06 17:18:14 +00:00
John Kåre Alsaker
cdd104922d Use the portable AtomicU64 2025-05-06 18:36:14 +02:00
Jakub Beránek
a84a946a3d
Handle PR not found in post-merge workflow 2025-05-06 18:35:05 +02:00
Guillaume Gomez
14782ad687 Add new test_main_with_exit_callback public function in libtest to allow a callback to be called before exiting 2025-05-06 18:17:48 +02:00
sayantn
546e26518f Run aarch64-pc-windows-msvc runs on the new windows-11-arm runners 2025-05-06 16:10:50 +00:00
sayantn
949fd567f3 Edit macro_trailing_commas to enable tests in all architectures 2025-05-06 16:10:50 +00:00
sayantn
f88c990b89 Fix segfault in cirrus CI 2025-05-06 16:10:50 +00:00
sayantn
b1ad50f1e0 Add riscv32 CI run 2025-05-06 16:10:50 +00:00
Hayashi Mikihiro
449d720651 add doc link test for hover
Signed-off-by: Hayashi Mikihiro <34ttrweoewiwe28@gmail.com>
2025-05-07 00:36:52 +09:00
Hayashi Mikihiro
ecb59e185a add doc link test for goto def
Signed-off-by: Hayashi Mikihiro <34ttrweoewiwe28@gmail.com>
2025-05-07 00:36:42 +09:00
Hayashi Mikihiro
8935d0bdea check module path inner or outer
Signed-off-by: Hayashi Mikihiro <34ttrweoewiwe28@gmail.com>
2025-05-07 00:36:17 +09:00
León Orell Valerian Liehr
8c37c8c3e6
Preserve generic args in suggestions for ambiguous associated items
Most notably, this preserves the `(..)` of ambiguous RTN paths.
2025-05-06 17:04:03 +02:00
León Orell Valerian Liehr
9e1832998d
Factor out resolve_type_relative_path
IMPORTANT: This leads to a tiny diagnostic regression that will be fixed in the next commit!
2025-05-06 17:00:01 +02:00
León Orell Valerian Liehr
7cd1da4a16
Rename and move several error reporting methods
Name them more consistently, descriptively and appropriately.
Move large error reporting methods into the dedicated error module to
make the happy paths in HIR ty lowering more legible.
2025-05-06 17:00:01 +02:00
León Orell Valerian Liehr
bda903ed8a
Introduce Boolean type PermitVariants for legibility 2025-05-06 17:00:00 +02:00
León Orell Valerian Liehr
3fd047d164
Name methods pertaining to HIR ty lowering of paths more appropriately 2025-05-06 17:00:00 +02:00
León Orell Valerian Liehr
5fdc0de28c
Eliminate unnecessary parameter 2025-05-06 17:00:00 +02:00
León Orell Valerian Liehr
1d9d30f35a
Consistently use the DiagCtxtHandle of HirTyLowerer instead of the one of TyCtxt
They are not the same.
2025-05-06 16:59:52 +02:00
lcnr
431f02d531 support duplicates in the opaque_types_storage 2025-05-06 14:59:09 +00:00
Alex Macleod
cf6bebb343
Remove some unused #![feature]s (#14738)
Mostly `let_chains` now that it's stable on 2024

changelog: none
2025-05-06 14:12:20 +00:00
Alex Macleod
737d3b3363 Remove some unused #![feature]s 2025-05-06 14:07:39 +00:00
Alex Macleod
94aa0d9a75 Update clippy_lints_internal to 2024 edition 2025-05-06 14:07:14 +00:00
bors
1a95cc6f9d Auto merge of #140702 - GuillaumeGomez:rollup-rpyxs20, r=GuillaumeGomez
Rollup of 4 pull requests

Successful merges:

 - #140135 (Unify sidebar buttons to use the same image)
 - #140632 (add a test for issue rust-lang/rust#81317)
 - #140658 (`deref_patterns`: let string and byte string literal patterns peel references and smart pointers before matching)
 - #140681 (Don't ignore compiler stderr in `lib-defaults.rs`)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-05-06 13:42:09 +00:00
Tshepang Mbambo
6e966d75fd
avoid duplicating commands
The 2 commands do the same thing.
Also, follow style used elsewhere in the guide.
2025-05-06 14:56:51 +02:00
Guillaume Gomez
9d05497ff6
Rollup merge of #140681 - jieyouxu:test_helpers, r=petrochenkov
Don't ignore compiler stderr in `lib-defaults.rs`

Closes #54222.

- Don't ignore compiler stderr.
- Document test intent.
- Move under `tests/ui/link-native-libs/` instead.

This was previously discussed on https://web.archive.org/web/20181028094402/https://botbot.me/mozilla/rust-tools/2017-02-21/?page=1.

try-job: armhf-gnu
try-job: test-various
try-job: x86_64-msvc-1
try-job: i686-msvc-1
try-job: x86_64-mingw-1
try-job: aarch64-apple
try-job: x86_64-apple-1
2025-05-06 14:50:47 +02:00
Guillaume Gomez
ebd12fcc5e
Rollup merge of #140658 - dianne:lit-deref-pats-p2, r=oli-obk
`deref_patterns`: let string and byte string literal patterns peel references and smart pointers before matching

This follows up on #140028. Together, they allow using string and byte string literal patterns to match on smart pointers when `deref_patterns` is enabled. In particular, string literals can now match on `String`, subsuming the functionality of the `string_deref_patterns` feature.

More generally, this works by letting literals peel references (and smart pointers) before matching, similar to most other patterns, providing an answer to #44849. Though it's only partially implemented at this point: this doesn't yet let named const patterns peel before matching. The peeling logic is general enough to support named consts, but the typing rules for named const patterns would need adjustments to feel consistent (e.g. arrays would need rules to be usable as slices, and `const STR: &'static str` wouldn't be able to match on a `String` unless a rule was added to let it be used where a `str` is expected, similar to what #140028 did for literals).

This also allows string and byte string patterns to match on mutable references, following up on https://github.com/rust-lang/rust/pull/140028#discussion_r2053927512. Rather than forward the mutability of the scrutinee to literal patterns, I've opted to peel `&mut`s from the scrutinee. From a design point of view, this makes the behavior consistent with what would be expected from deref coercions using the methodology in the next paragraph. From a diagnostics point of view, this avoids labeling string and byte string patterns as "mutable references", which I think could be confusing. See [`byte-string-type-errors.rs`](https://github.com/rust-lang/rust/compare/master...dianne:rust:lit-deref-pats-p2?expand=1#diff-4a0dd9b164b67c706751f3c0b5762ddab08bcef05a91972beb0190c6c1cd3706) for how the diagnostics look.

At a high level, the peeling logic implemented here tries to mimic how deref coercions work for expressions: we peel references (and smart pointers) from the scrutinee until the pattern can match against it, and no more. This is primarily tested by [`const-pats-do-not-mislead-inference.rs`](https://github.com/rust-lang/rust/compare/master...dianne:rust:lit-deref-pats-p2?expand=1#diff-19afc05b8aae9a30fe4a3a8c0bc2ab2c56b58755a45cdf5c12be0d5e83c4739d). To illustrate the connection, I wasn't sure if this made sense to include in the test file, but I've translated those tests to make sure they give the same inference results as deref coercions: [(playground)](https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=1869744cb9cdfed71a686990aadf9fe1). In each case, a reference to the scrutinee is coerced to have the type of the pattern (under a reference).

Tracking issue for deref patterns: #87121

r? `@oli-obk`
cc `@Nadrieril`
2025-05-06 14:50:46 +02:00
Guillaume Gomez
3501842edb
Rollup merge of #140632 - Skgland:test-for-issue-81317, r=oli-obk
add a test for issue rust-lang/rust#81317

closes rust-lang/rust#81317
2025-05-06 14:50:46 +02:00
Guillaume Gomez
a92ba60d0f
Rollup merge of #140135 - GuillaumeGomez:sidebars-image, r=rustdoc
Unify sidebar buttons to use the same image

Part of https://github.com/rust-lang/rust/issues/139832.

The source sidebar looks like this with the new image:

![image](https://github.com/user-attachments/assets/df4fee52-fb71-4794-91b7-3afc6d2aab70)

You can test it [here](https://rustdoc.crud.net/imperio/sidebar-images/src/foo/foo.rs.html).

r? `@notriddle`
2025-05-06 14:50:45 +02:00
Marijn Schouten
18a3599fe3 Update iterator.rs to use arrays by value
Update examples to no longer avoid iterating arrays for #84513
2025-05-06 12:19:24 +00:00
Zalathar
77a7ae4e9f coverage: Handle hole spans without dividing spans into buckets
Because we no longer merge non-adjacent spans, there is no need to use buckets
to prevent merging across hole spans.
2025-05-06 20:42:40 +10:00
Zalathar
4d5a1acebf coverage: Only merge adjacent coverage spans
This also removes some manipulation of the function signature span that only
made sense in the context of merging non-adjacent spans.
2025-05-06 20:42:25 +10:00
bors
f5d3fe273b Auto merge of #140561 - compiler-errors:gather-fewer-locals, r=lcnr
Do not gather local all together at the beginning of typeck

r? lcnr
2025-05-06 10:27:27 +00:00
Marijn Schouten
3d4737fb5e Remove duplicate impl of string unescape 2025-05-06 10:00:22 +00:00
Lukas Wirth
45f2d3c67a
Merge pull request #19738 from ChayimFriedman2/weird-gats
fix: Don't panic on some weird code
2025-05-06 09:05:19 +00:00
Jieyou Xu
cbaa73beca
tests: don't ignore compiler stderr in lib-defaults.rs
And also:

- Document test intent.
- Move under `link-native-libs/` instead.
2025-05-06 16:49:25 +08:00
Hayashi Mikihiro
7bf0c0034e Remove ast index mask
Signed-off-by: Hayashi Mikihiro <34ttrweoewiwe28@gmail.com>
2025-05-06 17:45:09 +09:00
Hayashi Mikihiro
a8b8b2be47 import std::iter::repeat
Signed-off-by: Hayashi Mikihiro <34ttrweoewiwe28@gmail.com>
2025-05-06 17:45:09 +09:00
Hayashi Mikihiro
674e10e982 Update crates/hir-expand/src/attrs.rs
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2025-05-06 17:45:09 +09:00