rust/src/test/rustdoc
bors 846ea58cd5 Auto merge of #56884 - euclio:codeblock-diagnostics, r=QuietMisdreavus
rustdoc: overhaul code block lexing errors

Fixes #53919.

This PR moves the reporting of code block lexing errors from rendering time to an early pass, so we can use the compiler's error reporting mechanisms. This dramatically improves the diagnostics in this situation: we now de-emphasize the lexing errors as a note under a warning that has a span and suggestion instead of just emitting errors at the top level.

Additionally, this PR generalizes the markdown -> source span calculation function, which should allow other rustdoc warnings to use better spans in the future.

Last, the PR makes sure that the code block is always emitted in the docs, even if it fails to highlight correctly.

Of note:
- The new pass unfortunately adds another pass over the docs to gather the doc blocks for syntax-checking. I wonder if this could be combined with the pass that looks for testable blocks? I'm not familiar with that code, so I don't know how feasible that is.
- `pulldown_cmark` doesn't make it easy to find the spans of the code blocks, so the code that calculates the spans is a little nasty. It works for all the test cases I threw at it, but I wouldn't be surprised if an edge case would break it. Should have a thorough review.
- This PR worsens the state of #56885, since those certain fatal lexing errors are now emitted before docs get generated at all.
2019-01-20 19:01:38 +00:00
..
auxiliary Cosmetic improvements 2019-01-13 19:47:02 +00:00
duplicate_impls Remove licenses 2018-12-25 21:08:33 -07:00
inline_cross Remove licenses 2018-12-25 21:08:33 -07:00
inline_local Remove licenses 2018-12-25 21:08:33 -07:00
primitive Remove licenses 2018-12-25 21:08:33 -07:00
src-links Remove licenses 2018-12-25 21:08:33 -07:00
synthetic_auto Simplify foreign type rendering. 2018-12-27 21:22:27 -08:00
test_option_check Remove licenses 2018-12-25 21:08:33 -07:00
all.rs Remove licenses 2018-12-25 21:08:33 -07:00
assoc-consts-version.rs Simplify foreign type rendering. 2018-12-27 21:22:27 -08:00
assoc-consts.rs Remove licenses 2018-12-25 21:08:33 -07:00
assoc-item-cast.rs Remove licenses 2018-12-25 21:08:33 -07:00
assoc-types.rs Remove licenses 2018-12-25 21:08:33 -07:00
async-fn.rs Remove licenses 2018-12-25 21:08:33 -07:00
attributes.rs Remove licenses 2018-12-25 21:08:33 -07:00
auto-impl-for-trait.rs Remove licenses 2018-12-25 21:08:33 -07:00
auto-impl-primitive.rs Remove licenses 2018-12-25 21:08:33 -07:00
auto-traits.rs Remove licenses 2018-12-25 21:08:33 -07:00
bad-codeblock-syntax.rs rustdoc: check code block syntax in early pass 2019-01-14 21:21:21 -05:00
blanket-reexport-item.rs Remove licenses 2018-12-25 21:08:33 -07:00
cap-lints.rs Remove licenses 2018-12-25 21:08:33 -07:00
check-styled-link.rs Remove licenses 2018-12-25 21:08:33 -07:00
codeblock-title.rs Remove licenses 2018-12-25 21:08:33 -07:00
comment-in-doctest.rs Remove licenses 2018-12-25 21:08:33 -07:00
const-display.rs Remove licenses 2018-12-25 21:08:33 -07:00
const-doc.rs Remove licenses 2018-12-25 21:08:33 -07:00
const-evalutation-ice.rs Remove licenses 2018-12-25 21:08:33 -07:00
const-fn.rs Remove licenses 2018-12-25 21:08:33 -07:00
const.rs Simplify foreign type rendering. 2018-12-27 21:22:27 -08:00
constructor-imports.rs Remove licenses 2018-12-25 21:08:33 -07:00
crate-version.rs Remove licenses 2018-12-25 21:08:33 -07:00
cross-crate-links.rs Remove licenses 2018-12-25 21:08:33 -07:00
default-impl.rs Remove licenses 2018-12-25 21:08:33 -07:00
default-trait-method-link.rs Remove licenses 2018-12-25 21:08:33 -07:00
deprecated-future.rs Remove licenses 2018-12-25 21:08:33 -07:00
deprecated-impls.rs Remove licenses 2018-12-25 21:08:33 -07:00
deprecated.rs Remove licenses 2018-12-25 21:08:33 -07:00
doc-assoc-item.rs Remove licenses 2018-12-25 21:08:33 -07:00
doc-cfg-target-feature.rs Remove licenses 2018-12-25 21:08:33 -07:00
doc-cfg.rs Remove licenses 2018-12-25 21:08:33 -07:00
doc-proc-macro.rs Remove licenses 2018-12-25 21:08:33 -07:00
doc-spotlight.rs Remove licenses 2018-12-25 21:08:33 -07:00
doctest-manual-crate-name.rs force binary filename for compiled doctests 2019-01-04 09:57:17 -06:00
dont-show-const-contents.rs Remove licenses 2018-12-25 21:08:33 -07:00
double-quote-escape.rs Remove licenses 2018-12-25 21:08:33 -07:00
edition-doctest.rs Remove licenses 2018-12-25 21:08:33 -07:00
edition-flag.rs Remove licenses 2018-12-25 21:08:33 -07:00
empty-mod-private.rs Remove licenses 2018-12-25 21:08:33 -07:00
empty-mod-public.rs Remove licenses 2018-12-25 21:08:33 -07:00
empty-section.rs Remove licenses 2018-12-25 21:08:33 -07:00
escape-deref-methods.rs Remove licenses 2018-12-25 21:08:33 -07:00
extern-default-method.rs Remove licenses 2018-12-25 21:08:33 -07:00
extern-html-root-url.rs Remove licenses 2018-12-25 21:08:33 -07:00
extern-impl-trait.rs Remove licenses 2018-12-25 21:08:33 -07:00
extern-impl.rs Remove licenses 2018-12-25 21:08:33 -07:00
extern-links.rs Remove licenses 2018-12-25 21:08:33 -07:00
extern-method.rs Remove licenses 2018-12-25 21:08:33 -07:00
external-cross.rs Remove licenses 2018-12-25 21:08:33 -07:00
external-doc.rs Remove licenses 2018-12-25 21:08:33 -07:00
ffi.rs Remove licenses 2018-12-25 21:08:33 -07:00
fn-pointer-arg-name.rs Remove licenses 2018-12-25 21:08:33 -07:00
fn-sidebar.rs Remove licenses 2018-12-25 21:08:33 -07:00
force-target-feature.rs Remove licenses 2018-12-25 21:08:33 -07:00
foreigntype-reexport.rs Remove licenses 2018-12-25 21:08:33 -07:00
foreigntype.rs Remove licenses 2018-12-25 21:08:33 -07:00
generic-impl.rs Remove licenses 2018-12-25 21:08:33 -07:00
hidden-impls.rs Remove licenses 2018-12-25 21:08:33 -07:00
hidden-line.rs Remove licenses 2018-12-25 21:08:33 -07:00
hidden-methods.rs Remove licenses 2018-12-25 21:08:33 -07:00
hidden-trait-struct-impls.rs Remove licenses 2018-12-25 21:08:33 -07:00
impl-disambiguation.rs Remove licenses 2018-12-25 21:08:33 -07:00
impl-everywhere.rs Remove licenses 2018-12-25 21:08:33 -07:00
impl-parts-crosscrate.rs Remove licenses 2018-12-25 21:08:33 -07:00
impl-parts.rs Remove licenses 2018-12-25 21:08:33 -07:00
index-page.rs Remove licenses 2018-12-25 21:08:33 -07:00
inline-default-methods.rs Remove licenses 2018-12-25 21:08:33 -07:00
internal.rs display rustc_private APIs as "Internal" 2018-12-20 13:47:39 -05:00
intra-link-extern-crate.rs Remove licenses 2018-12-25 21:08:33 -07:00
intra-link-in-bodies.rs Remove licenses 2018-12-25 21:08:33 -07:00
intra-link-private.rs Remove licenses 2018-12-25 21:08:33 -07:00
intra-link-self.rs Remove licenses 2018-12-25 21:08:33 -07:00
intra-links.rs Remove licenses 2018-12-25 21:08:33 -07:00
invalid.crate.name.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-12834.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-13698.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-15169.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-15318-2.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-15318-3.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-15318.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-15347.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-16019.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-16265-1.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-16265-2.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-17476.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-18199.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-19055.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-19181.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-19190-2.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-19190-3.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-19190.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-20175.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-20646.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-20727-2.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-20727-3.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-20727-4.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-20727.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-21092.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-21474.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-21801.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-22025.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-22038.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-23106.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-23207.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-23511.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-23744.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-23812.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-25001.rs Simplify foreign type rendering. 2018-12-27 21:22:27 -08:00
issue-25944.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-26606.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-26995.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-27104.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-27362.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-27759.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-27862.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-28478.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-28927.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-29449.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-29503.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-29584.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-30109.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-30252.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-30366.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-31808.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-31899.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-32374.rs use utf-8 throughout htmldocck 2019-01-06 01:27:33 -05:00
issue-32395.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-32556.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-32890.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-33069.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-33178-1.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-33178.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-33302.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-33592.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-34025.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-34274.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-34423.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-34473.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-34928.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-35169-2.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-35169.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-35488.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-36031.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-38129.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-38219.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-40936.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-41783.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-42760.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-42875.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-43153.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-43701.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-43869.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-43893.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-45584.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-46271.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-46377.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-46380-2.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-46380.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-46727.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-46766.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-46767.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-46976.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-47038.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-47197-blank-line-in-doc-block.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-47639.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-48377.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-48414.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-50159.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-51236.rs Simplify foreign type rendering. 2018-12-27 21:22:27 -08:00
issue-52873.rs add regression test 2018-09-25 13:54:51 -04:00
issue-53689.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-53812.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-54478-demo-allocator.rs This is a regression test for #54478. 2018-10-24 12:19:47 +02:00
issue-54705.rs Simplify foreign type rendering. 2018-12-27 21:22:27 -08:00
issue-55001.rs Fix Rustdoc ICE when checking blanket impls 2018-10-22 19:40:43 -04:00
issue-55321.rs Simplify foreign type rendering. 2018-12-27 21:22:27 -08:00
issue-56701.rs Fix stack overflow when finding blanket impls 2019-01-03 21:56:52 -05:00
issue-56822.rs Rollup merge of #56874 - JohnHeitmann:docs-spacing, r=GuillaumeGomez 2019-01-13 21:18:09 +01:00
keyword.rs Remove licenses 2018-12-25 21:08:33 -07:00
line-breaks.rs Remove licenses 2018-12-25 21:08:33 -07:00
link-assoc-const.rs Remove licenses 2018-12-25 21:08:33 -07:00
link-title-escape.rs Remove licenses 2018-12-25 21:08:33 -07:00
macros.rs Remove licenses 2018-12-25 21:08:33 -07:00
manual_impl.rs Remove licenses 2018-12-25 21:08:33 -07:00
masked.rs Remove licenses 2018-12-25 21:08:33 -07:00
method-list.rs Remove licenses 2018-12-25 21:08:33 -07:00
mod-stackoverflow.rs Remove licenses 2018-12-25 21:08:33 -07:00
module-impls.rs Remove licenses 2018-12-25 21:08:33 -07:00
must-use.rs Remove licenses 2018-12-25 21:08:33 -07:00
namespaces.rs Remove licenses 2018-12-25 21:08:33 -07:00
negative-impl-sidebar.rs Remove licenses 2018-12-25 21:08:33 -07:00
negative-impl.rs Remove licenses 2018-12-25 21:08:33 -07:00
no-crate-filter.rs Removed more copyright notices. 2019-01-13 19:47:02 +00:00
no-run-still-checks-lints.rs Remove licenses 2018-12-25 21:08:33 -07:00
no-stack-overflow-25295.rs Remove licenses 2018-12-25 21:08:33 -07:00
nul-error.rs Remove licenses 2018-12-25 21:08:33 -07:00
playground-arg.rs Remove licenses 2018-12-25 21:08:33 -07:00
playground-empty.rs Remove licenses 2018-12-25 21:08:33 -07:00
playground-none.rs Remove licenses 2018-12-25 21:08:33 -07:00
playground.rs Remove licenses 2018-12-25 21:08:33 -07:00
prim-title.rs Remove licenses 2018-12-25 21:08:33 -07:00
primitive-generic-impl.rs Remove licenses 2018-12-25 21:08:33 -07:00
primitive-link.rs Remove licenses 2018-12-25 21:08:33 -07:00
private-type-alias.rs Remove licenses 2018-12-25 21:08:33 -07:00
proc-macro.rs Remove licenses 2018-12-25 21:08:33 -07:00
pub-extern-crate.rs add test for pub extern crate 2019-01-10 21:18:46 -05:00
pub-method.rs Remove licenses 2018-12-25 21:08:33 -07:00
pub-restricted.rs Remove licenses 2018-12-25 21:08:33 -07:00
pub-use-extern-macros.rs Remove licenses 2018-12-25 21:08:33 -07:00
recursion1.rs Remove licenses 2018-12-25 21:08:33 -07:00
recursion2.rs Remove licenses 2018-12-25 21:08:33 -07:00
recursion3.rs Remove licenses 2018-12-25 21:08:33 -07:00
redirect-const.rs Remove licenses 2018-12-25 21:08:33 -07:00
redirect-rename.rs Remove licenses 2018-12-25 21:08:33 -07:00
redirect.rs Remove licenses 2018-12-25 21:08:33 -07:00
remove-duplicates.rs Remove licenses 2018-12-25 21:08:33 -07:00
rustc-macro-crate.rs Remove licenses 2018-12-25 21:08:33 -07:00
search-index-summaries.rs Remove licenses 2018-12-25 21:08:33 -07:00
search-index.rs Remove licenses 2018-12-25 21:08:33 -07:00
short-docblock-codeblock.rs Remove licenses 2018-12-25 21:08:33 -07:00
short-dockblock.rs Remove licenses 2018-12-25 21:08:33 -07:00
sidebar-items.rs Remove licenses 2018-12-25 21:08:33 -07:00
sidebar-link-generation.rs Remove licenses 2018-12-25 21:08:33 -07:00
smoke.rs Remove licenses 2018-12-25 21:08:33 -07:00
sort-modules-by-appearance.rs Remove licenses 2018-12-25 21:08:33 -07:00
source-file.rs Remove licenses 2018-12-25 21:08:33 -07:00
src-links-external.rs Remove licenses 2018-12-25 21:08:33 -07:00
src-links.rs Remove licenses 2018-12-25 21:08:33 -07:00
static-root-path.rs Remove licenses 2018-12-25 21:08:33 -07:00
struct-field.rs Remove licenses 2018-12-25 21:08:33 -07:00
structfields.rs Remove licenses 2018-12-25 21:08:33 -07:00
test-lists.rs Remove licenses 2018-12-25 21:08:33 -07:00
test-parens.rs Remove licenses 2018-12-25 21:08:33 -07:00
titles.rs Remove licenses 2018-12-25 21:08:33 -07:00
trait-attributes.rs Remove licenses 2018-12-25 21:08:33 -07:00
trait-self-link.rs Remove licenses 2018-12-25 21:08:33 -07:00
traits-in-bodies-private.rs Remove licenses 2018-12-25 21:08:33 -07:00
traits-in-bodies.rs Remove licenses 2018-12-25 21:08:33 -07:00
tuples.rs Remove licenses 2018-12-25 21:08:33 -07:00
typedef.rs Remove licenses 2018-12-25 21:08:33 -07:00
union.rs Remove licenses 2018-12-25 21:08:33 -07:00
unit-return.rs Remove licenses 2018-12-25 21:08:33 -07:00
universal-impl-trait.rs Remove licenses 2018-12-25 21:08:33 -07:00
unneeded-trait-implementations-title.rs Remove licenses 2018-12-25 21:08:33 -07:00
variadic.rs Remove licenses 2018-12-25 21:08:33 -07:00
viewpath-rename.rs Remove licenses 2018-12-25 21:08:33 -07:00
viewpath-self.rs Remove licenses 2018-12-25 21:08:33 -07:00
where-sized.rs Remove licenses 2018-12-25 21:08:33 -07:00
where.rs Remove licenses 2018-12-25 21:08:33 -07:00