rust/tests
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
..
assembly tests: s/C-cmse/cmse/ 2025-06-25 00:52:10 -07:00
auxiliary tests: Adopt ABI transmute tests from crashtests 2025-06-23 09:40:00 -07:00
codegen Remove support for dyn* 2025-07-01 19:00:21 +00:00
codegen-units Auto merge of #142893 - Mark-Simulacrum:no-const-collect, r=oli-obk 2025-06-27 12:57:05 +00:00
coverage coverage: Revert "unused local file IDs" due to empty function names 2025-05-27 23:33:29 +10:00
coverage-run-rustdoc
crashes Remove support for dyn* 2025-07-01 19:00:21 +00:00
debuginfo tests: {Meta,Pointee}Sized in non-minicore tests 2025-06-16 23:04:33 +00:00
incremental Stop requiring HIR for trait item wf checks 2025-06-30 08:45:43 +00:00
mir-opt Rollup merge of #142571 - cjgillot:borrowed-classes, r=oli-obk 2025-06-20 23:25:55 -04:00
pretty Move the place in &pin mut $place when !Unpin to ensure soundness 2025-06-15 10:31:11 +08:00
run-make Rollup merge of #143199 - jieyouxu:short-ice, r=RalfJung 2025-06-30 19:23:22 +08:00
rustdoc Rollup merge of #142367 - GuillaumeGomez:extern-crate-items-intra-doc, r=lolbinarycat 2025-06-29 06:59:28 +02:00
rustdoc-gui rustdoc: make srcIndex no longer a global variable 2025-06-16 20:22:24 -05:00
rustdoc-js Migrate some tests away from concat-idents 2025-06-24 10:54:54 +00:00
rustdoc-js-std add doc(alias("AsciiChar")) to core::ascii::Char 2025-06-20 11:11:51 -05:00
rustdoc-json Port #[link_section] to the new attribute parsing infrastructure 2025-06-29 16:23:46 +02:00
rustdoc-ui Replace ItemCtxt::report_placeholder_type_error match with a call to TyCtxt::def_descr 2025-06-30 20:36:16 +02:00
ui Rollup merge of #143070 - joshtriplett:macro-rules-parse, r=petrochenkov 2025-07-02 19:29:37 +02:00
ui-fulldeps Stop backends from needing to support nullary intrinsics 2025-06-30 08:04:19 +00:00
COMPILER_TESTS.md