From d4aecf52dba643bf938a572d506995c5cad4602e Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Sun, 9 Apr 2017 18:31:59 +0200 Subject: [PATCH 1/2] Fix block code headers parsing --- src/librustdoc/html/markdown.rs | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/librustdoc/html/markdown.rs b/src/librustdoc/html/markdown.rs index 1e687d63f5875..dca873a85d813 100644 --- a/src/librustdoc/html/markdown.rs +++ b/src/librustdoc/html/markdown.rs @@ -471,20 +471,26 @@ impl LangString { for token in tokens { match token { "" => {}, - "should_panic" => { data.should_panic = true; seen_rust_tags = true; }, - "no_run" => { data.no_run = true; seen_rust_tags = true; }, - "ignore" => { data.ignore = true; seen_rust_tags = true; }, - "rust" => { data.rust = true; seen_rust_tags = true; }, - "test_harness" => { data.test_harness = true; seen_rust_tags = true; }, + "should_panic" => { + data.should_panic = true; + seen_rust_tags = seen_other_tags == false; + } + "no_run" => { data.no_run = true; seen_rust_tags = seen_other_tags == false; } + "ignore" => { data.ignore = true; seen_rust_tags = seen_other_tags == false; } + "rust" => { data.rust = true; seen_rust_tags = true; } + "test_harness" => { + data.test_harness = true; + seen_rust_tags = seen_other_tags == false || seen_rust_tags == true; + } "compile_fail" if allow_compile_fail => { data.compile_fail = true; - seen_rust_tags = true; + seen_rust_tags = seen_other_tags == false || seen_rust_tags == true; data.no_run = true; } x if allow_error_code_check && x.starts_with("E") && x.len() == 5 => { if let Ok(_) = x[1..].parse::() { data.error_codes.push(x.to_owned()); - seen_rust_tags = true; + seen_rust_tags = seen_other_tags == false || seen_rust_tags == true; } else { seen_other_tags = true; } @@ -670,9 +676,10 @@ mod tests { t("test_harness", false, false, false, true, true, false, Vec::new()); t("compile_fail", false, true, false, true, false, true, Vec::new()); t("{.no_run .example}", false, true, false, true, false, false, Vec::new()); - t("{.sh .should_panic}", true, false, false, true, false, false, Vec::new()); + t("{.sh .should_panic}", true, false, false, false, false, false, Vec::new()); t("{.example .rust}", false, false, false, true, false, false, Vec::new()); t("{.test_harness .rust}", false, false, false, true, true, false, Vec::new()); + t("text, no_run", false, true, false, false, false, false, Vec::new()); } #[test] From 143f7be8b65d5e1be549e1b283e8e3423bdab41c Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Mon, 10 Apr 2017 14:35:28 +0200 Subject: [PATCH 2/2] Remove strings fulfilled with whitespaces in code block headers --- src/librustdoc/html/markdown.rs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/librustdoc/html/markdown.rs b/src/librustdoc/html/markdown.rs index dca873a85d813..c59101cc77996 100644 --- a/src/librustdoc/html/markdown.rs +++ b/src/librustdoc/html/markdown.rs @@ -469,28 +469,28 @@ impl LangString { ); for token in tokens { - match token { + match token.trim() { "" => {}, "should_panic" => { data.should_panic = true; seen_rust_tags = seen_other_tags == false; } - "no_run" => { data.no_run = true; seen_rust_tags = seen_other_tags == false; } - "ignore" => { data.ignore = true; seen_rust_tags = seen_other_tags == false; } + "no_run" => { data.no_run = true; seen_rust_tags = !seen_other_tags; } + "ignore" => { data.ignore = true; seen_rust_tags = !seen_other_tags; } "rust" => { data.rust = true; seen_rust_tags = true; } "test_harness" => { data.test_harness = true; - seen_rust_tags = seen_other_tags == false || seen_rust_tags == true; + seen_rust_tags = !seen_other_tags || seen_rust_tags; } "compile_fail" if allow_compile_fail => { data.compile_fail = true; - seen_rust_tags = seen_other_tags == false || seen_rust_tags == true; + seen_rust_tags = !seen_other_tags || seen_rust_tags; data.no_run = true; } x if allow_error_code_check && x.starts_with("E") && x.len() == 5 => { if let Ok(_) = x[1..].parse::() { data.error_codes.push(x.to_owned()); - seen_rust_tags = seen_other_tags == false || seen_rust_tags == true; + seen_rust_tags = !seen_other_tags || seen_rust_tags; } else { seen_other_tags = true; } @@ -680,6 +680,7 @@ mod tests { t("{.example .rust}", false, false, false, true, false, false, Vec::new()); t("{.test_harness .rust}", false, false, false, true, true, false, Vec::new()); t("text, no_run", false, true, false, false, false, false, Vec::new()); + t("text,no_run", false, true, false, false, false, false, Vec::new()); } #[test]