diff options
| author | Mark Rousskov <mark.simulacrum@gmail.com> | 2018-07-21 17:15:25 -0600 |
|---|---|---|
| committer | Mark Rousskov <mark.simulacrum@gmail.com> | 2018-07-31 11:37:21 -0600 |
| commit | 03e34f8f816c2594238585bdca39716f4050cb69 (patch) | |
| tree | dd3a63e35155a04fa7729dca7b8e60d8fb29e924 /src/librustdoc | |
| parent | de5cebdba58770ab555476bc4cdf23d89bd0c3ea (diff) | |
| download | rust-03e34f8f816c2594238585bdca39716f4050cb69.tar.gz rust-03e34f8f816c2594238585bdca39716f4050cb69.zip | |
Remove dependency on error handling from find_testable_code
Diffstat (limited to 'src/librustdoc')
| -rw-r--r-- | src/librustdoc/html/markdown.rs | 21 | ||||
| -rw-r--r-- | src/librustdoc/markdown.rs | 6 | ||||
| -rw-r--r-- | src/librustdoc/test.rs | 10 |
3 files changed, 24 insertions, 13 deletions
diff --git a/src/librustdoc/html/markdown.rs b/src/librustdoc/html/markdown.rs index c73e6d4b355..54fd041fb00 100644 --- a/src/librustdoc/html/markdown.rs +++ b/src/librustdoc/html/markdown.rs @@ -34,10 +34,8 @@ use std::fmt::{self, Write}; use std::borrow::Cow; use std::ops::Range; use std::str; -use syntax::feature_gate::UnstableFeatures; -use syntax::codemap::Span; -use errors; +use syntax::feature_gate::UnstableFeatures; use html::render::derive_id; use html::toc::TocBuilder; use html::highlight; @@ -469,10 +467,17 @@ impl<'a, I: Iterator<Item = Event<'a>>> Iterator for Footnotes<'a, I> { } } -pub fn find_testable_code(doc: &str, tests: &mut ::test::Collector, position: Span, - handler: &errors::Handler) { - tests.set_position(position); +pub struct TestableCodeError(()); + +impl fmt::Display for TestableCodeError { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "invalid start of a new code block") + } +} +pub fn find_testable_code( + doc: &str, tests: &mut test::Collector +) -> Result<(), TestableCodeError> { let is_nightly = UnstableFeatures::from_environment().is_nightly_build(); let mut parser = Parser::new(doc); let mut prev_offset = 0; @@ -516,8 +521,7 @@ pub fn find_testable_code(doc: &str, tests: &mut ::test::Collector, position: Sp tests.add_test(text, block_info, line); prev_offset = offset; } else { - handler.span_warn(position, "invalid start of a new code block"); - break; + return Err(TestableCodeError(())); } } Event::Start(Tag::Header(level)) => { @@ -535,6 +539,7 @@ pub fn find_testable_code(doc: &str, tests: &mut ::test::Collector, position: Sp _ => {} } } + Ok(()) } #[derive(Eq, PartialEq, Clone, Debug)] diff --git a/src/librustdoc/markdown.rs b/src/librustdoc/markdown.rs index 82489e9fbdb..4d1eae1470f 100644 --- a/src/librustdoc/markdown.rs +++ b/src/librustdoc/markdown.rs @@ -156,7 +156,11 @@ pub fn test(input: &str, cfgs: Vec<String>, libs: SearchPaths, externs: Externs, true, opts, maybe_sysroot, None, Some(PathBuf::from(input)), linker, edition); - find_testable_code(&input_str, &mut collector, DUMMY_SP, diag); + collector.set_position(DUMMY_SP); + let res = find_testable_code(&input_str, &mut collector); + if let Err(err) = res { + diag.span_warn(DUMMY_SP, &err.to_string()); + } test_args.insert(0, "rustdoctest".to_string()); testing::test_main(&test_args, collector.tests, testing::Options::new().display_output(display_warnings)); diff --git a/src/librustdoc/test.rs b/src/librustdoc/test.rs index 2885ce615d2..9723b452800 100644 --- a/src/librustdoc/test.rs +++ b/src/librustdoc/test.rs @@ -687,10 +687,12 @@ impl<'a, 'hir> HirCollector<'a, 'hir> { // the collapse-docs pass won't combine sugared/raw doc attributes, or included files with // anything else, this will combine them for us if let Some(doc) = attrs.collapsed_doc_value() { - markdown::find_testable_code(&doc, - self.collector, - attrs.span.unwrap_or(DUMMY_SP), - self.sess.diagnostic()); + self.collector.set_position(attrs.span.unwrap_or(DUMMY_SP)); + let res = markdown::find_testable_code(&doc, self.collector); + if let Err(err) = res { + self.sess.diagnostic().span_warn(attrs.span.unwrap_or(DUMMY_SP), + &err.to_string()); + } } nested(self); |
