about summary refs log tree commit diff
path: root/compiler/rustc_parse/src/errors.rs
diff options
context:
space:
mode:
authorTsukasa OI <floss_rust@irq.a4lg.com>2025-08-14 04:39:31 +0000
committerTsukasa OI <floss_rust@irq.a4lg.com>2025-08-14 04:39:31 +0000
commit74aca53f5591f9ad4a5e74c42eb101534c3e7b12 (patch)
treeb88773e4d9d9bd9341f6016ec7225e6c6103d40c /compiler/rustc_parse/src/errors.rs
parent3672a55b7cfd0a12e7097197b6242872473ffaa7 (diff)
downloadrust-74aca53f5591f9ad4a5e74c42eb101534c3e7b12.tar.gz
rust-74aca53f5591f9ad4a5e74c42eb101534c3e7b12.zip
rustdoc: Allow multiple references to a single footnote
Multiple references to a single footnote is a part of GitHub Flavored
Markdown syntax (although not explicitly documented as well as regular
footnotes, it is implemented in GitHub's fork of CommonMark) and not
prohibited by rustdoc.

cf. <https://github.com/github/cmark-gfm/blob/587a12bb54d95ac37241377e6ddc93ea0e45439b/test/extensions.txt#L762-L780>

However, using it makes multiple "sup" elements with the same "id"
attribute, which is invalid per the HTML specification.

Still, not only this is a valid GitHub Flavored Markdown syntax, this is
helpful on certain cases and actually tested (accidentally) in
tests/rustdoc/footnote-reference-in-footnote-def.rs.

This commit keeps track of the number of references per footnote and gives
unique ID to each reference.  It also emits *all* back links from a footnote
to its references as "↩" (return symbol) plus a numeric list in superscript.

As a known limitation, it assumes that all references to a footnote are
rendered (this is not always true if a dangling footnote has one or more
references but considered a reasonable compromise).

Also note that, this commit is designed so that no HTML changes will occur
unless multiple references to a single footnote is actually used.
Diffstat (limited to 'compiler/rustc_parse/src/errors.rs')
0 files changed, 0 insertions, 0 deletions