Skip to content

Commit 339e29a

Browse files
Fix tests line
1 parent 7fe3b21 commit 339e29a

File tree

3 files changed

+23
-38
lines changed

3 files changed

+23
-38
lines changed

Cargo.lock

+4-15
Original file line numberDiff line numberDiff line change
@@ -480,7 +480,7 @@ dependencies = [
480480
"itertools 0.8.0",
481481
"lazy_static 1.3.0",
482482
"matches",
483-
"pulldown-cmark 0.6.1",
483+
"pulldown-cmark",
484484
"quine-mc_cluskey",
485485
"regex-syntax",
486486
"semver",
@@ -1972,7 +1972,7 @@ dependencies = [
19721972
"log",
19731973
"memchr",
19741974
"open",
1975-
"pulldown-cmark 0.6.1",
1975+
"pulldown-cmark",
19761976
"regex",
19771977
"serde",
19781978
"serde_derive",
@@ -1999,7 +1999,7 @@ dependencies = [
19991999
"log",
20002000
"mdbook",
20012001
"percent-encoding 2.1.0",
2002-
"pulldown-cmark 0.6.1",
2002+
"pulldown-cmark",
20032003
"rayon",
20042004
"regex",
20052005
"reqwest",
@@ -2641,17 +2641,6 @@ dependencies = [
26412641
"url 2.1.0",
26422642
]
26432643

2644-
[[package]]
2645-
name = "pulldown-cmark"
2646-
version = "0.5.3"
2647-
source = "registry+https://github.com/rust-lang/crates.io-index"
2648-
checksum = "77043da1282374688ee212dc44b3f37ff929431de9c9adc3053bd3cee5630357"
2649-
dependencies = [
2650-
"bitflags",
2651-
"memchr",
2652-
"unicase",
2653-
]
2654-
26552644
[[package]]
26562645
name = "pulldown-cmark"
26572646
version = "0.6.1"
@@ -3902,7 +3891,7 @@ name = "rustdoc"
39023891
version = "0.0.0"
39033892
dependencies = [
39043893
"minifier",
3905-
"pulldown-cmark 0.6.1",
3894+
"pulldown-cmark",
39063895
"rustc-rayon 0.3.0",
39073896
"tempfile",
39083897
]

src/librustdoc/html/markdown.rs

+17-22
Original file line numberDiff line numberDiff line change
@@ -554,9 +554,7 @@ impl<'a, I: Iterator<Item = Event<'a>>> Iterator for Footnotes<'a, I> {
554554
pub fn find_testable_code<T: test::Tester>(doc: &str, tests: &mut T, error_codes: ErrorCodes,
555555
enable_per_target_ignores: bool) {
556556
let mut parser = Parser::new(doc).into_offset_iter();
557-
let mut nb_lines = 0;
558557
let mut register_header = None;
559-
let mut prev_offset = 0;
560558
while let Some((event, offset)) = parser.next() {
561559
match event {
562560
Event::Start(Tag::CodeBlock(s)) => {
@@ -578,10 +576,10 @@ pub fn find_testable_code<T: test::Tester>(doc: &str, tests: &mut T, error_codes
578576
.map(|l| map_line(l).for_code())
579577
.collect::<Vec<Cow<'_, str>>>()
580578
.join("\n");
581-
nb_lines += doc[prev_offset..offset.end].lines().count();
579+
// "+ 1" is to take into account the start of the code block
580+
let nb_lines = doc[..offset.start].lines().count() + 1;
582581
let line = tests.get_line() + nb_lines;
583582
tests.add_test(text, block_info, line);
584-
prev_offset = offset.start;
585583
}
586584
Event::Start(Tag::Heading(level)) => {
587585
register_header = Some(level as u32);
@@ -927,8 +925,8 @@ crate fn rust_code_blocks(md: &str) -> Vec<RustCodeBlock> {
927925
let mut code_block = None;
928926
let mut code_start = 0;
929927
let mut is_fenced = false;
930-
let mut previous_offset = Range { start: 0, end: 0 };
931928
let mut in_rust_code_block = false;
929+
let mut previous_offset = Range { start: 0, end: 0 };
932930
while let Some((event, offset_range)) = p.next() {
933931
match event {
934932
Event::Start(Tag::CodeBlock(syntax)) => {
@@ -942,35 +940,31 @@ crate fn rust_code_blocks(md: &str) -> Vec<RustCodeBlock> {
942940
in_rust_code_block = true;
943941
code_block = Some(offset_range.clone());
944942

945-
code_start = match md[offset_range.clone()].find("```") {
946-
Some(_) => {
947-
is_fenced = true;
948-
offset_range.start + md[offset_range.clone()]
949-
.lines()
950-
.next()
951-
.map_or(0, |x| x.len() + 1)
952-
}
953-
None => {
954-
is_fenced = false;
955-
offset_range.start
956-
}
943+
code_start = if !md[previous_offset.end..offset_range.start].ends_with(" ") {
944+
is_fenced = true;
945+
offset_range.start + md[offset_range.clone()]
946+
.lines()
947+
.next()
948+
.map_or(0, |x| x.len() + 1)
949+
} else {
950+
is_fenced = false;
951+
offset_range.start
957952
};
958-
previous_offset = Range { start: code_start, end: offset_range.end };
959953
}
960954
}
961955
Event::End(Tag::CodeBlock(syntax)) if in_rust_code_block => {
962956
in_rust_code_block = false;
963957

964958
let code_end = if is_fenced {
965-
let last_len = md[previous_offset.clone()]
959+
let last_len = md[offset_range.clone()]
966960
.lines()
967961
.last()
962+
.filter(|l| l.ends_with("```"))
968963
.map_or(0, |l| l.len());
969-
previous_offset.end - last_len
964+
offset_range.end - last_len
970965
} else {
971-
previous_offset.end
966+
offset_range.end
972967
};
973-
974968
code_blocks.push(RustCodeBlock {
975969
is_fenced,
976970
range: code_block.clone().unwrap(),
@@ -987,6 +981,7 @@ crate fn rust_code_blocks(md: &str) -> Vec<RustCodeBlock> {
987981
}
988982
_ => (),
989983
}
984+
previous_offset = offset_range;
990985
}
991986

992987
code_blocks

src/test/rustdoc-ui/invalid-syntax.stderr

+2-1
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,8 @@ warning: could not parse code block as Rust code
115115
LL | /// code with bad syntax
116116
| _________^
117117
LL | | /// \_
118-
| |__________^
118+
LL | | ///
119+
| |_
119120

120121
error: unknown start of token: `
121122
--> <doctest>:1:1

0 commit comments

Comments
 (0)