Rollup merge of #48382 - GuillaumeGomez:fix-rustdoc-test-panic, r=estebank

Fix rustdoc test ICE

Fixes #48377.

r? @QuietMisdreavus
This commit is contained in:
Guillaume Gomez 2018-02-21 16:29:56 +01:00 committed by GitHub
commit c118d37ac4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 38 additions and 12 deletions

View File

@ -471,18 +471,21 @@ pub fn find_testable_code(doc: &str, tests: &mut ::test::Collector, position: Sp
break 'main; break 'main;
} }
} }
let offset = offset.unwrap_or(0); if let Some(offset) = offset {
let lines = test_s.lines().map(|l| map_line(l).for_code()); let lines = test_s.lines().map(|l| map_line(l).for_code());
let text = lines.collect::<Vec<&str>>().join("\n"); let text = lines.collect::<Vec<&str>>().join("\n");
nb_lines += doc[prev_offset..offset].lines().count(); nb_lines += doc[prev_offset..offset].lines().count();
let line = tests.get_line() + (nb_lines - 1); let line = tests.get_line() + (nb_lines - 1);
let filename = tests.get_filename(); let filename = tests.get_filename();
tests.add_test(text.to_owned(), tests.add_test(text.to_owned(),
block_info.should_panic, block_info.no_run, block_info.should_panic, block_info.no_run,
block_info.ignore, block_info.test_harness, block_info.ignore, block_info.test_harness,
block_info.compile_fail, block_info.error_codes, block_info.compile_fail, block_info.error_codes,
line, filename, block_info.allow_fail); line, filename, block_info.allow_fail);
prev_offset = offset; prev_offset = offset;
} else {
break;
}
} }
Event::Start(Tag::Header(level)) => { Event::Start(Tag::Header(level)) => {
register_header = Some(level as u32); register_header = Some(level as u32);

View File

@ -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 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, 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() {}