Commit graph

299028 commits

Author SHA1 Message Date
bors
837c5dd7de Auto merge of #142890 - kornelski:unused-var-debug, r=saethlin
MIR inliner maintains unused var_debug_info

Only `full` debuginfo level promises variable-level debug information, but the MIR inline pass needlessly preserved the local variable debug info for the `limited` level too.
2025-07-03 23:17:03 +00:00
bors
da58c05131 Auto merge of #143390 - GuillaumeGomez:rollup-2avj41s, r=GuillaumeGomez
Rollup of 5 pull requests

Successful merges:

 - rust-lang/rust#141831 (rustdoc: fix attrs of locally reexported foreign items)
 - rust-lang/rust#143364 (don't include `.md` in title)
 - rust-lang/rust#143369 (Various refactorings to the metadata loader)
 - rust-lang/rust#143379 (Post {beta,stable}-accepted notifications to compiler/bootstrap backport zulip channels on `{beta,stable}-accepted` label application)
 - rust-lang/rust#143384 (Update browser-ui-test version to `0.21.1`)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-07-03 19:59:09 +00:00
Guillaume Gomez
9092fbbee1
Rollup merge of #143384 - GuillaumeGomez:update-browser-ui-test, r=kobzol
Update browser-ui-test version to `0.21.1`

One day I'll find time and motivation to use `package.json` instead. 😆

r? `@Kobzol`
2025-07-03 19:45:33 +02:00
Guillaume Gomez
3bc36be1ad
Rollup merge of #143379 - jieyouxu:backport-accepted, r=apiraino
Post {beta,stable}-accepted notifications to compiler/bootstrap backport zulip channels on `{beta,stable}-accepted` label application

The first commit slightly reorganizes `triagebot.toml` (no functional changes) with some dividing sections, because I found it hard to find the actual sections.

The second and third commit configures triagebot to post

> PR #`{number}` has been **accepted** for **{beta,stable}** backport.

to compiler/bootstrap backport threads respectively, when https://github.com/rust-lang/rust/labels/beta-accepted and https://github.com/rust-lang/rust/labels/stable-accepted labels are applied.

Best reviewed commit-by-commit.

cc `@Kobzol`
r? `@apiraino`
2025-07-03 19:45:32 +02:00
Guillaume Gomez
62a7fb0fcb
Rollup merge of #143369 - bjorn3:cleanup_metadata_loading, r=lcnr
Various refactorings to the metadata loader
2025-07-03 19:45:31 +02:00
Guillaume Gomez
990224b598
Rollup merge of #143364 - fee1-dead-contrib:push-pzymzusnzlso, r=workingjubilee
don't include `.md` in title

its been bugging me
2025-07-03 19:45:31 +02:00
Guillaume Gomez
678ec9bbd4
Rollup merge of #141831 - lolbinarycat:rustdoc-extern-reexport-135092, r=GuillaumeGomez
rustdoc: fix attrs of locally reexported foreign items

fixes rust-lang/rust#135092

also tweaks a few outdated/misleading comments.

r? `@GuillaumeGomez`
2025-07-03 19:45:30 +02:00
bors
48aee7e383 Auto merge of #142857 - rust-lang:cargo_update, r=clubby789
Weekly `cargo update`

Automation to keep dependencies in `Cargo.lock` current.

The following is the output from `cargo update`:

```txt

compiler & tools dependencies:
     Locking 23 packages to latest compatible versions
    Updating anstyle-svg v0.1.8 -> v0.1.9
    Updating autocfg v1.4.0 -> v1.5.0
    Updating bumpalo v3.18.1 -> v3.19.0
    Updating derive-where v1.4.0 -> v1.5.0
    Updating errno v0.3.12 -> v0.3.13
    Updating indexmap v2.9.0 -> v2.10.0
    Updating libredox v0.1.3 -> v0.1.4
    Updating owo-colors v4.2.1 -> v4.2.2
    Updating pest v2.8.0 -> v2.8.1
    Updating pest_derive v2.8.0 -> v2.8.1
    Updating pest_generator v2.8.0 -> v2.8.1
    Updating pest_meta v2.8.0 -> v2.8.1
    Updating r-efi v5.2.0 -> v5.3.0
    Updating rustc-build-sysroot v0.5.8 -> v0.5.9
    Updating slab v0.4.9 -> v0.4.10
    Updating syn v2.0.103 -> v2.0.104
      Adding toml v0.8.23
      Adding toml_edit v0.22.27
      Adding toml_write v0.1.2
    Updating tracing-attributes v0.1.29 -> v0.1.30
    Updating xattr v1.5.0 -> v1.5.1
    Updating zerocopy v0.8.25 -> v0.8.26
    Updating zerocopy-derive v0.8.25 -> v0.8.26
note: pass `--verbose` to see 39 unchanged dependencies behind latest

library dependencies:
     Locking 0 packages to latest compatible versions
note: pass `--verbose` to see 3 unchanged dependencies behind latest

rustbook dependencies:
     Locking 21 packages to latest compatible versions
    Updating autocfg v1.4.0 -> v1.5.0
    Updating bumpalo v3.18.1 -> v3.19.0
    Updating errno v0.3.12 -> v0.3.13
    Updating indexmap v2.9.0 -> v2.10.0
    Updating markup5ever v0.16.1 -> v0.16.2
    Updating pest v2.8.0 -> v2.8.1
    Updating pest_derive v2.8.0 -> v2.8.1
    Updating pest_generator v2.8.0 -> v2.8.1
    Updating pest_meta v2.8.0 -> v2.8.1
    Updating r-efi v5.2.0 -> v5.3.0
    Updating syn v2.0.103 -> v2.0.104
      Adding windows-sys v0.60.2
      Adding windows-targets v0.53.2
      Adding windows_aarch64_gnullvm v0.53.0
      Adding windows_aarch64_msvc v0.53.0
      Adding windows_i686_gnu v0.53.0
      Adding windows_i686_gnullvm v0.53.0
      Adding windows_i686_msvc v0.53.0
      Adding windows_x86_64_gnu v0.53.0
      Adding windows_x86_64_gnullvm v0.53.0
      Adding windows_x86_64_msvc v0.53.0
```
2025-07-03 16:57:14 +00:00
github-actions
5737b856d6 cargo update
compiler & tools dependencies:
     Locking 23 packages to latest compatible versions
    Updating anstyle-svg v0.1.8 -> v0.1.9
    Updating autocfg v1.4.0 -> v1.5.0
    Updating bumpalo v3.18.1 -> v3.19.0
    Updating derive-where v1.4.0 -> v1.5.0
    Updating errno v0.3.12 -> v0.3.13
    Updating indexmap v2.9.0 -> v2.10.0
    Updating libredox v0.1.3 -> v0.1.4
    Updating owo-colors v4.2.1 -> v4.2.2
    Updating pest v2.8.0 -> v2.8.1
    Updating pest_derive v2.8.0 -> v2.8.1
    Updating pest_generator v2.8.0 -> v2.8.1
    Updating pest_meta v2.8.0 -> v2.8.1
    Updating r-efi v5.2.0 -> v5.3.0
    Updating rustc-build-sysroot v0.5.8 -> v0.5.9
    Updating slab v0.4.9 -> v0.4.10
    Updating syn v2.0.103 -> v2.0.104
      Adding toml v0.8.23
      Adding toml_edit v0.22.27
      Adding toml_write v0.1.2
    Updating tracing-attributes v0.1.29 -> v0.1.30
    Updating xattr v1.5.0 -> v1.5.1
    Updating zerocopy v0.8.25 -> v0.8.26
    Updating zerocopy-derive v0.8.25 -> v0.8.26
note: pass `--verbose` to see 39 unchanged dependencies behind latest

library dependencies:
     Locking 0 packages to latest compatible versions
note: pass `--verbose` to see 3 unchanged dependencies behind latest

rustbook dependencies:
     Locking 21 packages to latest compatible versions
    Updating autocfg v1.4.0 -> v1.5.0
    Updating bumpalo v3.18.1 -> v3.19.0
    Updating errno v0.3.12 -> v0.3.13
    Updating indexmap v2.9.0 -> v2.10.0
    Updating markup5ever v0.16.1 -> v0.16.2
    Updating pest v2.8.0 -> v2.8.1
    Updating pest_derive v2.8.0 -> v2.8.1
    Updating pest_generator v2.8.0 -> v2.8.1
    Updating pest_meta v2.8.0 -> v2.8.1
    Updating r-efi v5.2.0 -> v5.3.0
    Updating syn v2.0.103 -> v2.0.104
      Adding windows-sys v0.60.2
      Adding windows-targets v0.53.2
      Adding windows_aarch64_gnullvm v0.53.0
      Adding windows_aarch64_msvc v0.53.0
      Adding windows_i686_gnu v0.53.0
      Adding windows_i686_gnullvm v0.53.0
      Adding windows_i686_msvc v0.53.0
      Adding windows_x86_64_gnu v0.53.0
      Adding windows_x86_64_gnullvm v0.53.0
      Adding windows_x86_64_msvc v0.53.0
2025-07-03 17:30:33 +01:00
Guillaume Gomez
c2465259bf Update browser-ui-test version to 0.21.1 2025-07-03 18:08:23 +02:00
Jieyou Xu
8ae4fc78d5
Post {beta,stable}-accepted message to bootstrap backport threads 2025-07-03 22:42:27 +08:00
Jieyou Xu
dc4ef5641f
Post {beta,stable}-accepted message to compiler backport threads 2025-07-03 22:34:55 +08:00
Jieyou Xu
091a798bfe
[NFC] Re-organize triagebot.toml
Add some dividing sections, as it was hard to quickly identify which
section is which.
2025-07-03 22:31:12 +08:00
bors
a413f77285 Auto merge of #143363 - jdonszelmann:rollup-7cv1kql, r=jdonszelmann
Rollup of 6 pull requests

Successful merges:

 - rust-lang/rust#134006 (setup typos check in CI)
 - rust-lang/rust#142876 (Port `#[target_feature]` to new attribute parsing infrastructure)
 - rust-lang/rust#143038 (avoid suggesting traits from private dependencies)
 - rust-lang/rust#143083 (Fix rustdoc not correctly showing attributes on re-exports)
 - rust-lang/rust#143283 (document optional jobs)
 - rust-lang/rust#143329 (minicore: use core's `diagnostic::on_unimplemented` messages)

Failed merges:

 - rust-lang/rust#143237 (Port `#[no_implicit_prelude]` to the new attribute parsing infrastructure)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-07-03 13:55:05 +00:00
bjorn3
47caa0a927 Make most CrateLocator fields private
This ensures they don't get out of sync
2025-07-03 11:57:56 +00:00
bjorn3
57d6c1bab8 Have a separate code path for -Zdual-proc-macro
This makes it clearer when the locator and when crate_rejections is updated
2025-07-03 11:55:40 +00:00
bjorn3
87633054dc Pass CrateRejections separately from CrateLocator
This allows all CrateLocator methods to take &self.
2025-07-03 11:55:39 +00:00
bjorn3
121dac5cbb Deduplicate getting the path of a lib candidate 2025-07-03 11:52:19 +00:00
Deadbeef
2b0d2c43f2 don't include .md in title 2025-07-03 19:50:40 +08:00
Jana Dönszelmann
f85283b0d4
Rollup merge of #143329 - folkertdev:minicore-diagnostic-on-unimplemented, r=jieyouxu
minicore: use core's `diagnostic::on_unimplemented` messages

Without these attributes, the error message is different. Keeping the diagnostics up-to-date seems related to https://github.com/rust-lang/rust/issues/137531.

The modified test files are reported in https://github.com/rust-lang/rust/issues/143319 as failing for `--target=riscv64gc-unknown-linux-gnu`. Using `minicore` for them makes it easier to troubleshoot this sort of issue.

r? ``@jieyouxu``
2025-07-03 13:29:39 +02:00
Jana Dönszelmann
924a3e1a71
Rollup merge of #143283 - marcoieni:document-optional, r=jieyouxu
document optional jobs
2025-07-03 13:29:38 +02:00
Jana Dönszelmann
622722aada
Rollup merge of #143083 - JonathanBrouwer:rustdoc-fix, r=jdonszelmann
Fix rustdoc not correctly showing attributes on re-exports

Fixes attributes not being shown correctly in rustdoc on re-exports

Does this need to be backported to beta?

r? ``@jdonszelmann``
2025-07-03 13:29:37 +02:00
Jana Dönszelmann
0aaac883de
Rollup merge of #143038 - Qelxiros:142676-private-dependency-traits, r=tgross35
avoid suggesting traits from private dependencies

fixes rust-lang/rust#142676
fixes rust-lang/rust#138191

r? ``@tgross35``
2025-07-03 13:29:36 +02:00
Jana Dönszelmann
5026d0cd8e
Rollup merge of #142876 - JonathanBrouwer:target_feature_parser, r=oli-obk
Port `#[target_feature]` to new attribute parsing infrastructure

Ports `target_feature` to the new attribute parsing infrastructure for https://github.com/rust-lang/rust/issues/131229#issuecomment-2971353197

r? ``@jdonszelmann``
2025-07-03 13:29:36 +02:00
Jana Dönszelmann
f6d37a25a9
Rollup merge of #134006 - klensy:typos, r=nnethercote
setup typos check in CI

This allows to check typos in CI, currently for compiler only (to reduce commit size with fixes). With current setup, exclude list is quite short, so it worth trying?

Also includes commits with actual typo fixes.

MCP: https://github.com/rust-lang/compiler-team/issues/817

typos check currently turned for:
* ./compiler
* ./library
* ./src/bootstrap
* ./src/librustdoc

After merging, PRs which enables checks for other crates (tools) can be implemented too.

Found typos will **not break** other jobs immediately: (tests, building compiler for perf run). Job will be marked as red on completion in ~ 20 secs, so you will not forget to fix it whenever you want, before merging pr.

Check typos: `python x.py test tidy --extra-checks=spellcheck`
Apply typo fixes: `python x.py test tidy --extra-checks=spellcheck:fix` (in case if there only 1 suggestion of each typo)

Current fail in this pr is expected and shows how typo errors emitted. Commit with error will be removed after r+.
2025-07-03 13:29:35 +02:00
bors
9e64506923 Auto merge of #142910 - yotamofek:pr/rustdoc/markdown-lazy-to-string, r=GuillaumeGomez
Lazy-ify some markdown rendering

Seems to have a positive effect in my local perf runs 😍

r? `@GuillaumeGomez` if you're interested, otherwise feel free to reassign
(would also love a perf run)
2025-07-03 10:33:29 +00:00
Folkert de Vries
8512e39769
minicore: use core's diagnostic::on_unimplemented messages 2025-07-03 10:22:40 +02:00
klensy
c76d032f01 setup CI and tidy to use typos for spellchecking and fix few typos 2025-07-03 10:51:06 +03:00
bors
d6120810e5 Auto merge of #143294 - ChrisDenton:rename-mingw, r=Kobzol
Rename `mingw-*` CI jobs to `pr-*`

The name `mingw` confuses people because these CI jobs now do much more than just cross-compile to mingw.

This is basically a find/replace. I chose the name `pr-` because it's job is to do general PR checks,
2025-07-03 07:23:17 +00:00
Jonathan Brouwer
3d5d72b761
Port #[target_feature] to the new attribute parsing infrastructure
Signed-off-by: Jonathan Brouwer <jonathantbrouwer@gmail.com>
2025-07-03 07:54:19 +02:00
bors
6268d0aa34 Auto merge of #143350 - matthiaskrgr:rollup-zcuvkve, r=matthiaskrgr
Rollup of 9 pull requests

Successful merges:

 - rust-lang/rust#143192 (Improve CSS for source code block line numbers)
 - rust-lang/rust#143251 (bootstrap: add build.tidy-extra-checks option)
 - rust-lang/rust#143273 (Make the enum check work for negative discriminants)
 - rust-lang/rust#143292 (Explicitly handle all nodes in `generics_of` when computing parent)
 - rust-lang/rust#143316 (Add bootstrap check snapshot tests)
 - rust-lang/rust#143321 (byte-addresses memory -> byte-addressed memory)
 - rust-lang/rust#143324 (interpret: move the native call preparation logic into Miri)
 - rust-lang/rust#143325 (Use non-global interner in `test_string_interning` in bootstrap)
 - rust-lang/rust#143327 (miri: improve errors for type validity assertion failures)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-07-03 04:16:20 +00:00
Matthias Krüger
bc0262d0f1
Rollup merge of #143327 - RalfJung:miri-type-validity-error, r=oli-obk
miri: improve errors for type validity assertion failures

Miri has pretty nice errors for type validity violations, printing which field in the type the problem occurs at and so on.

However, we don't see these errors when using e.g. `mem::zeroed` as that uses `assert_zero_valid` to bail out before Miri can detect the UB.

Similar to what we did with `@saethlin's` UB checks, I think we should disable such language UB checks in Miri so that we can get better error messages. If we go for this we should probably say this in the intrinsic docs as well so that people don't think they can rely on these intrinsics catching anything.

Furthermore, I slightly changed `MaybeUninit::assume_init` so that the `.value` field does not show up in error messages any more.

`@rust-lang/miri` what do you think?
2025-07-03 05:21:36 +02:00
Matthias Krüger
5aa7dd81d8
Rollup merge of #143325 - Kobzol:bootstrap-interner, r=clubby789
Use non-global interner in `test_string_interning` in bootstrap

Just a small cleanup that we found on our GSoC call.

CC `@Shourya742`
2025-07-03 05:21:36 +02:00
Matthias Krüger
7e600de3c8
Rollup merge of #143324 - RalfJung:native-call-prep, r=oli-obk
interpret: move the native call preparation logic into Miri

`@nia-e` has to do a bunch of changes to this logic for her native call ptrace work, and it's getting annoying that the logic is split between Miri and rustc. So this moves the logic to Miri, keeping just the generic traversal part in rustc. It is unfortunate that this means we have to expose `get_alloc_raw`/`get_alloc_raw_mut`... I hope the function name is scary enough to reduce the risk of misuse.

r? `@oli-obk`
2025-07-03 05:21:35 +02:00
Matthias Krüger
f000754761
Rollup merge of #143321 - hkBst:typo-1, r=compiler-errors
byte-addresses memory -> byte-addressed memory

Small typo fix
2025-07-03 05:21:34 +02:00
Matthias Krüger
4a3c2fca22
Rollup merge of #143316 - Kobzol:bootstrap-check-tests, r=jieyouxu
Add bootstrap check snapshot tests

Split off from https://github.com/rust-lang/rust/pull/143048, so that we get a baseline of how check behaved before we make changes to it. Note that the output of the check snapshot tests is suboptimal in many places, as we're missing information about stages and the build compiler. That will be changed in https://github.com/rust-lang/rust/pull/143048.

r? `@jieyouxu`
2025-07-03 05:21:34 +02:00
Matthias Krüger
547dc74fcd
Rollup merge of #143292 - compiler-errors:explicit-generic, r=oli-obk
Explicitly handle all nodes in `generics_of` when computing parent

If we, for example, forget to feed `generics_of` then it'll silently fall back to empty generics. Make this a bit more explicit.
2025-07-03 05:21:33 +02:00
Matthias Krüger
ddda937701
Rollup merge of #143273 - 1c3t3a:enum-check-negative, r=SparrowLii
Make the enum check work for negative discriminants

The discriminant check was not working correctly for negative numbers. This change fixes that by masking out the relevant bits correctly.

Fixes rust-lang/rust#143218.
2025-07-03 05:21:32 +02:00
Matthias Krüger
c3e3f43f2a
Rollup merge of #143251 - lolbinarycat:bootstrap-toml-tidy-extra-checks, r=Kobzol
bootstrap: add build.tidy-extra-checks option

split off from rust-lang/rust#142924

r? `@Kobzol`
2025-07-03 05:21:32 +02:00
Matthias Krüger
6d54983ae9
Rollup merge of #143192 - GuillaumeGomez:code-line-number, r=lolbinary
Improve CSS for source code block line numbers

Extract some changes from https://github.com/rust-lang/rust/pull/137229 to make the PR smaller (thanks `@yotamofek` for the suggestion!).

r? notriddle
2025-07-03 05:21:31 +02:00
Jeremy Smart
6b824e8143
avoid suggesting traits from private dependencies 2025-07-02 22:04:51 -04:00
bors
25face9808 Auto merge of #143338 - matthiaskrgr:rollup-ykaxh04, r=matthiaskrgr
Rollup of 11 pull requests

Successful merges:

 - rust-lang/rust#131923 (Derive `Copy` and `Hash` for `IntErrorKind`)
 - rust-lang/rust#138340 (Remove some unsized tuple impls now that we don't support unsizing tuples anymore)
 - rust-lang/rust#141219 (Change `{Box,Arc,Rc,Weak}::into_raw` to only work with `A = Global`)
 - rust-lang/rust#142212 (bootstrap: validate `rust.codegen-backends` & `target.<triple>.codegen-backends`)
 - rust-lang/rust#142237 (Detect more cases of unused_parens around types)
 - rust-lang/rust#142964 (Attribute rework: a parser for single attributes without arguments)
 - rust-lang/rust#143070 (Rewrite `macro_rules!` parser to not use the MBE engine itself)
 - rust-lang/rust#143235 (Assemble const bounds via normal item bounds in old solver too)
 - rust-lang/rust#143261 (Feed `explicit_predicates_of` instead of `predicates_of`)
 - rust-lang/rust#143276 (loop match: handle opaque patterns)
 - rust-lang/rust#143306 (Add `track_caller` attributes to trace origin of Clippy lints)

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

try-job: aarch64-apple
try-job: x86_64-msvc-1
try-job: x86_64-gnu
try-job: dist-i586-gnu-i586-i686-musl
try-job: test-various
2025-07-02 23:29:03 +00:00
bors
6677875279 Auto merge of #143337 - matthiaskrgr:rollup-lqwhe0i, r=matthiaskrgr
Rollup of 9 pull requests

Successful merges:

 - rust-lang/rust#141847 (Explain `TOCTOU` on the top of `std::fs`, and reference it in functions)
 - rust-lang/rust#142138 (Add `Vec::into_chunks`)
 - rust-lang/rust#142321 (Expose elf abi on ppc64 targets)
 - rust-lang/rust#142886 (ci: aarch64-gnu: Stop skipping `panic_abort_doc_tests`)
 - rust-lang/rust#143194 (fix bitcast of single-element SIMD vectors)
 - rust-lang/rust#143231 (Suggest use another lifetime specifier instead of underscore lifetime)
 - rust-lang/rust#143232 ([COMPILETEST-UNTANGLE 3/N] Use "directives" consistently within compiletest)
 - rust-lang/rust#143258 (Don't recompute `DisambiguatorState` for every RPITIT in trait definition)
 - rust-lang/rust#143274 (ci: support optional jobs)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-07-02 20:25:23 +00:00
Matthias Krüger
bc8bcc7e8a
Rollup merge of #143306 - samueltardieu:track-clippy-lints-emission, r=petrochenkov
Add `track_caller` attributes to trace origin of Clippy lints

This allows the use of `-Z track-diagnostics` to see the origin of Clippy lints emission, as is already the case for lints coming from rustc.
2025-07-02 19:29:39 +02:00
Matthias Krüger
0617a9eb95
Rollup merge of #143276 - folkertdev:loop-match-opaque-pattern, r=Nadrieril
loop match: handle opaque patterns

tracking issue https://github.com/rust-lang/rust/issues/132306
fixes https://github.com/rust-lang/rust/issues/143203

I believe the `Opaque` comes up because the range pattern is invalid? Because we do handle float patterns already so those should be fine.

r? `@Nadrieril`
2025-07-02 19:29:38 +02:00
Matthias Krüger
2becacff8b
Rollup merge of #143261 - compiler-errors:explicit-pred, r=oli-obk
Feed `explicit_predicates_of` instead of `predicates_of`

Tiny nitpick, just avoiding needing to mark the `predicates_of` query as feedable since it's derived from `explicit_predicates_of`.
2025-07-02 19:29:38 +02:00
Matthias Krüger
2ce579da73
Rollup merge of #143235 - compiler-errors:const-item-bound, r=oli-obk
Assemble const bounds via normal item bounds in old solver too

Fixes the first example in https://rust-lang.zulipchat.com/#narrow/channel/144729-t-types/topic/elaboration.20of.20const.20bounds.3F/with/526378135

The code duplication here is not that nice, but it's at least very localized.

cc `@davidtwco`

r? oli-obk
2025-07-02 19:29:37 +02:00
Matthias Krüger
383f107867
Rollup merge of #143070 - joshtriplett:macro-rules-parse, r=petrochenkov
Rewrite `macro_rules!` parser to not use the MBE engine itself

The `macro_rules!` parser was written to match the series of rules using the macros-by-example (MBE) engine and a hand-written equivalent of the left-hand side of a MBE macro. This was complex to read, difficult to extend, and produced confusing error messages. Because it was using the MBE engine, any parse failure would be reported as if some macro was being applied to the `macro_rules!` invocation itself; for instance, errors would talk about "macro invocation", "macro arguments", and "macro call", when they were actually about the macro *definition*.

And in practice, the `macro_rules!` parser only used the MBE engine to extract the left-hand side and right-hand side of each rule as a token tree, and then parsed the rest using a separate parser.

Rewrite it to parse the series of rules using a simple loop, instead. This makes it more extensible in the future, and improves error messages. For instance, omitting a semicolon between rules will result in "expected `;`" and "unexpected token", rather than the confusing "no rules expected this token in macro call".

This work was greatly aided by pair programming with Vincenzo Palazzo (`@vincenzopalazzo)` and Eric Holk (`@eholk).`

For review, I recommend reading the two commits separately.
2025-07-02 19:29:37 +02:00
Matthias Krüger
2dbb9be326
Rollup merge of #142964 - GrigorenkoPV:attributes/argless, r=oli-obk
Attribute rework: a parser for single attributes without arguments

Part of rust-lang/rust#131229

r? `@jdonszelmann`

I think code (with comments) speaks for itself.

The only subtlety: now `#[cold]`, `#[no_mangle]`, & `#[track_caller]` do not get thrown away when malformed (i.e. have arguments). This doesn't matter too much (I think), because an error gets emitted either way, so the compilation will not finish.
2025-07-02 19:29:36 +02:00
Matthias Krüger
6ebf642a04
Rollup merge of #142237 - benschulz:unused-parens-fn, r=fee1-dead
Detect more cases of unused_parens around types

With this change, more unused parentheses around bounds and types nested within bounds are detected.
2025-07-02 19:29:35 +02:00