diff --git a/src/librustdoc/html/markdown.rs b/src/librustdoc/html/markdown.rs
index 66fe2280aef7e..ae28e5a0923ea 100644
--- a/src/librustdoc/html/markdown.rs
+++ b/src/librustdoc/html/markdown.rs
@@ -471,18 +471,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() {}