diff --git a/src/librustdoc/html/markdown.rs b/src/librustdoc/html/markdown.rs index 82ced00644da8..7ba73cc0eb026 100644 --- a/src/librustdoc/html/markdown.rs +++ b/src/librustdoc/html/markdown.rs @@ -1027,18 +1027,21 @@ pub fn find_testable_code(doc: &str, tests: &mut ::test::Collector, position: Sp break 'main; } } - let offset = offset.unwrap_or(0); - let lines = test_s.lines().map(|l| map_line(l).for_code()); - let text = lines.collect::>().join("\n"); - nb_lines += doc[prev_offset..offset].lines().count(); - let line = tests.get_line() + (nb_lines - 1); - let filename = tests.get_filename(); - tests.add_test(text.to_owned(), - block_info.should_panic, block_info.no_run, - block_info.ignore, block_info.test_harness, - block_info.compile_fail, block_info.error_codes, - line, filename, block_info.allow_fail); - prev_offset = offset; + if let Some(offset) = offset { + let lines = test_s.lines().map(|l| map_line(l).for_code()); + let text = lines.collect::>().join("\n"); + nb_lines += doc[prev_offset..offset].lines().count(); + let line = tests.get_line() + (nb_lines - 1); + let filename = tests.get_filename(); + tests.add_test(text.to_owned(), + block_info.should_panic, block_info.no_run, + block_info.ignore, block_info.test_harness, + block_info.compile_fail, block_info.error_codes, + line, filename, block_info.allow_fail); + prev_offset = offset; + } else { + break; + } } Event::Start(Tag::Header(level)) => { register_header = Some(level as u32); diff --git a/src/test/rustdoc/issue-48377.rs b/src/test/rustdoc/issue-48377.rs new file mode 100644 index 0000000000000..d098b1a5b02f1 --- /dev/null +++ b/src/test/rustdoc/issue-48377.rs @@ -0,0 +1,23 @@ +// Copyright 2018 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// compile-flags:--test + +//! This is a doc comment +//! +//! ```rust +//! fn main() {} +//! ``` +//! +//! With a trailing code fence +//! ``` + +/// Some foo function +pub fn foo() {}