diff options
| author | Michael Howell <michael@notriddle.com> | 2022-09-12 12:48:22 -0700 |
|---|---|---|
| committer | Michael Howell <michael@notriddle.com> | 2022-09-12 12:48:22 -0700 |
| commit | 29f789ffdc3da0cd1d0b0be67284265f6a5ab818 (patch) | |
| tree | f725ade3aab8c650d32083d7279eb578c7adbf51 | |
| parent | 98e1f041b6e33598a18edb928ec9db93a850c6cb (diff) | |
rustdoc: fix treatment of backslash-escaped HTML
Try generating HTML for this markup:
\<a href="https://example.com">example</a>
It will produce text, not HTML, in both rustdoc's real HTML output and in
the commonmark reference implementation:
https://spec.commonmark.org/dingus/?text=%5C%3Ca%20href%3D%22https%3A%2F%2Fexample.com%22%3Eexample%3C%2Fa%3E
| -rw-r--r-- | src/librustdoc/passes/html_tags.rs | 2 | ||||
| -rw-r--r-- | src/test/rustdoc-ui/invalid-html-tags.rs | 7 | ||||
| -rw-r--r-- | src/test/rustdoc-ui/invalid-html-tags.stderr | 8 |
3 files changed, 15 insertions, 2 deletions
diff --git a/src/librustdoc/passes/html_tags.rs b/src/librustdoc/passes/html_tags.rs index f3a3c853cac..5cea9def2d9 100644 --- a/src/librustdoc/passes/html_tags.rs +++ b/src/librustdoc/passes/html_tags.rs @@ -278,7 +278,7 @@ impl<'a, 'tcx> DocVisitor for InvalidHtmlTagsLinter<'a, 'tcx> { for (event, range) in p { match event { Event::Start(Tag::CodeBlock(_)) => in_code_block = true, - Event::Html(text) | Event::Text(text) if !in_code_block => { + Event::Html(text) if !in_code_block => { extract_tags(&mut tags, &text, range, &mut is_in_comment, &report_diag) } Event::End(Tag::CodeBlock(_)) => in_code_block = false, diff --git a/src/test/rustdoc-ui/invalid-html-tags.rs b/src/test/rustdoc-ui/invalid-html-tags.rs index 0f9d2e4b35d..317f1fd1d46 100644 --- a/src/test/rustdoc-ui/invalid-html-tags.rs +++ b/src/test/rustdoc-ui/invalid-html-tags.rs @@ -114,3 +114,10 @@ pub fn k() {} /// Web Components style </unopened-tag> //~^ ERROR unopened HTML tag `unopened-tag` pub fn m() {} + +/// backslashed \<a href=""> +pub fn no_error_1() {} + +/// backslashed \<<a href=""> +//~^ ERROR unclosed HTML tag `a` +pub fn p() {} diff --git a/src/test/rustdoc-ui/invalid-html-tags.stderr b/src/test/rustdoc-ui/invalid-html-tags.stderr index 24a455576e8..9c2bfcf2c3d 100644 --- a/src/test/rustdoc-ui/invalid-html-tags.stderr +++ b/src/test/rustdoc-ui/invalid-html-tags.stderr @@ -94,5 +94,11 @@ error: unclosed HTML tag `dashed-tags` LL | /// Web Components style <dashed-tags> | ^^^^^^^^^^^^^ -error: aborting due to 15 previous errors +error: unclosed HTML tag `a` + --> $DIR/invalid-html-tags.rs:121:19 + | +LL | /// backslashed \<<a href=""> + | ^^ + +error: aborting due to 16 previous errors |
