diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2020-09-27 16:15:26 +0200 |
|---|---|---|
| committer | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2020-10-03 14:16:24 +0200 |
| commit | 30cabfd215f374b855f6d6473b00a55c3511c3e2 (patch) | |
| tree | a0808301f08cc30635f2db5d733cc5d2aee50b3c | |
| parent | b2321bb8da18c753fe3b9b71937a368ae42b8c4b (diff) | |
| download | rust-30cabfd215f374b855f6d6473b00a55c3511c3e2.tar.gz rust-30cabfd215f374b855f6d6473b00a55c3511c3e2.zip | |
Don't warn if the tag is nested inside a <script> or inside a <style>
| -rw-r--r-- | src/librustdoc/passes/html_tags.rs | 5 | ||||
| -rw-r--r-- | src/test/rustdoc-ui/invalid-html-tags.rs | 22 |
2 files changed, 26 insertions, 1 deletions
diff --git a/src/librustdoc/passes/html_tags.rs b/src/librustdoc/passes/html_tags.rs index 79035ba79ff..490e913fbde 100644 --- a/src/librustdoc/passes/html_tags.rs +++ b/src/librustdoc/passes/html_tags.rs @@ -48,8 +48,11 @@ fn drop_tag( if let Some(pos) = tags.iter().rev().position(|(t, _)| *t == tag_name) { // Because this is from a `rev` iterator, the position is reversed as well! let pos = tags.len() - 1 - pos; + // If the tag is nested inside a "<script>", not warning should be emitted. + let should_not_warn = + tags.iter().take(pos + 1).any(|(at, _)| at == "script" || at == "style"); for (last_tag_name, last_tag_span) in tags.drain(pos + 1..) { - if ALLOWED_UNCLOSED.iter().any(|&at| at == &last_tag_name) { + if should_not_warn || ALLOWED_UNCLOSED.iter().any(|&at| at == &last_tag_name) { continue; } // `tags` is used as a queue, meaning that everything after `pos` is included inside it. diff --git a/src/test/rustdoc-ui/invalid-html-tags.rs b/src/test/rustdoc-ui/invalid-html-tags.rs index 51bbae2a0b6..0dc2002bd39 100644 --- a/src/test/rustdoc-ui/invalid-html-tags.rs +++ b/src/test/rustdoc-ui/invalid-html-tags.rs @@ -39,3 +39,25 @@ pub fn b() {} /// <h3> //~^ ERROR unclosed HTML tag `h3` pub fn c() {} + +// Unclosed tags shouldn't warn if they are nested inside a <script> elem. +/// <script> +/// <h3><div> +/// </script> +/// <script> +/// <div> +/// <p> +/// </div> +/// </script> +pub fn d() {} + +// Unclosed tags shouldn't warn if they are nested inside a <style> elem. +/// <style> +/// <h3><div> +/// </style> +/// <style> +/// <div> +/// <p> +/// </div> +/// </style> +pub fn e() {} |
