rust/tests
Matthias Krüger 97b5b9b817
Rollup merge of #148169 - fmease:rustdoc-bad-intra-bad-preprocess, r=lolbinarycat
Fix bad intra-doc-link preprocessing

How did rust-lang/rust#147981 happen?

1. We don't parse intra-doc links as Rust paths or qpaths. Instead they follow a very lenient bespoke grammar. We completely ignore Markdown links if they contain characters that don't match `/[a-zA-Z0-9_:<>, !*&;]/` (we don't even emit lint *broken-intra-doc-links* for these).
2. PR [#132748](https://github.com/rust-lang/rust/pull/132748) made rustdoc intepret more Markdown links as potential intra-doc links. Namely, if the link is surrounded by backticks (and some other conditions apply) then it doesn't matter if the (partially processed) link contains bad characters as defined above (cc `ignore_urllike && should_ignore_link(path_str)`).
3. However, rustdoc's `preprocess_link` must be kept in sync with a simplified counterpart in rustc. More specifically, whenever rustdoc's preprocessor returns a successful result then rustc's must yield the same result. Otherwise, rustc doesn't resolve the necessary links for rustdoc.
4. This uncovered a "dormant bug" / "mistake" in rustc's `preprocess_link`. Namely, when presented with a link like `struct@Type@suffix`, it didn't cut off the disambiguator if present (here: `struct@`). Instead it `rsplit('``@')``` which is incorrect if the "path" contains ```@``` itself (yielding `suffix` instead of `Type@suffix` here). Prior to PR [#132748](https://github.com/rust-lang/rust/pull/132748), a link like ``[`struct@Type@suffix`]`` was not considered a potential intra-doc link / worth querying rustc for. Now it is due to the backticks.
5. Finally, since rustc didn't record a resolution for `Type@suffix` (it only recorded `suffix` (to be `Res::Err`)), we triggered an assertion we have in place to catch cases like this.

Fixes rust-lang/rust#147981.

I didn't and still don't have the time to investigate if rust-lang/rust#132748 led to more rustc/rustdoc mismatches (after all, the PR made rustdoc's `preprocess_link` return `Some(Ok(_))` in more cases). I've at least added another much needed "warning banner" & made the existing one more flashy.

While this fixes a stable-to-beta regression, I don't think it's worth beta backporting, esp. since it's only P-medium and since the final 1.91 release steps commence today / the next days, so it would only be stressful to get it in on time. However, feel free to nominate.

<sub>(I've written such a verbose PR description since I tend to reread my old PR descriptions in the far future to fully freshen my memories when I have to work again in this area)</sub>

r? ``@lolbinarycat``
2025-11-30 18:44:22 +01:00
..
assembly-llvm Rollup merge of #149409 - cezarbbb:stable_ssp, r=SparrowLii 2025-11-29 21:12:26 +11:00
auxiliary Rollup merge of #147521 - sayantn:simd-const-intrinsics, r=madsmtm 2025-11-19 09:48:07 +01:00
codegen-llvm Auto merge of #147404 - JamieCunliffe:inline-always, r=jackh726 2025-11-28 22:58:22 +00:00
codegen-units Document fmt::Arguments internal representation. 2025-11-12 12:48:39 +01:00
coverage Bless coverage tests. 2025-11-12 12:48:45 +01:00
coverage-run-rustdoc
crashes collapse constness query match logic 2025-11-29 20:00:40 -05:00
debuginfo update type names in debuginfo tests 2025-11-29 15:59:11 +01:00
incremental Bless tests. 2025-11-12 12:48:27 +01:00
mir-opt Rollup merge of #149087 - nxsaken:unchecked_neg_shifts_stabilize, r=Amanieu 2025-11-28 15:30:43 +11:00
pretty Document fmt::Arguments internal representation. 2025-11-12 12:48:39 +01:00
run-make Rollup merge of #148234 - notriddle:doc-cci, r=GuillaumeGomez 2025-11-24 19:10:43 +01:00
run-make-cargo Skip the panic-immediate-abort-works test when cross-compiling 2025-09-22 21:13:38 -04:00
rustdoc add test 2025-11-26 16:33:13 +09:00
rustdoc-gui Fix invalid link generation for type alias methods 2025-11-24 17:01:32 +01:00
rustdoc-js Auto merge of #149370 - Zalathar:rollup-6fkk5x4, r=Zalathar 2025-11-27 07:30:25 +00:00
rustdoc-js-std Add regression test for including derive macros in macro filtering 2025-10-27 16:00:32 +01:00
rustdoc-json Add tests for doc(attribute = "...") attribute 2025-08-28 15:56:30 +02:00
rustdoc-ui Rollup merge of #148169 - fmease:rustdoc-bad-intra-bad-preprocess, r=lolbinarycat 2025-11-30 18:44:22 +01:00
ui Rollup merge of #148765 - joboet:split-up-thread, r=ChrisDenton 2025-11-29 20:54:06 +01:00
ui-fulldeps Add UI test for DefId::parent() 2025-11-14 20:33:56 -05:00
COMPILER_TESTS.md