From 7986bb8c463ea6c61788983e4016243bef97acdc Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Mon, 16 Nov 2020 15:31:35 +0100 Subject: [PATCH 1/2] Don't warn about invalid HTML tags in code blocks --- src/librustdoc/passes/html_tags.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/librustdoc/passes/html_tags.rs b/src/librustdoc/passes/html_tags.rs index 26b64b4905ea7..bfe53d63960b1 100644 --- a/src/librustdoc/passes/html_tags.rs +++ b/src/librustdoc/passes/html_tags.rs @@ -4,7 +4,7 @@ use crate::core::DocContext; use crate::fold::DocFolder; use crate::html::markdown::opts; use core::ops::Range; -use pulldown_cmark::{Event, Parser}; +use pulldown_cmark::{Event, Parser, Tag}; use rustc_session::lint; use std::iter::Peekable; use std::str::CharIndices; @@ -196,14 +196,17 @@ impl<'a, 'tcx> DocFolder for InvalidHtmlTagsLinter<'a, 'tcx> { let mut tags = Vec::new(); let mut is_in_comment = None; + let mut in_code_block = false; let p = Parser::new_ext(&dox, opts()).into_offset_iter(); for (event, range) in p { match event { - Event::Html(text) | Event::Text(text) => { + Event::Start(Tag::CodeBlock(_)) => in_code_block = true, + Event::Html(text) | Event::Text(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, _ => {} } } From bbd302bab469a1da3804a4b998817ccbf15c874e Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Mon, 16 Nov 2020 15:32:26 +0100 Subject: [PATCH 2/2] Add test to ensure that "invalid HTML tag" lint isn't fired in code blocks --- src/test/rustdoc-ui/invalid-html-tags.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/test/rustdoc-ui/invalid-html-tags.rs b/src/test/rustdoc-ui/invalid-html-tags.rs index 56ca7e79d4358..9c2fc4beb5eb1 100644 --- a/src/test/rustdoc-ui/invalid-html-tags.rs +++ b/src/test/rustdoc-ui/invalid-html-tags.rs @@ -87,3 +87,24 @@ pub fn h() {} ///