diff options
| author | Andy Russell <arussell123@gmail.com> | 2020-06-28 13:06:33 -0400 |
|---|---|---|
| committer | Andy Russell <arussell123@gmail.com> | 2020-06-28 13:06:33 -0400 |
| commit | 608807934d41168cb30c6eee6442fe29251e40f0 (patch) | |
| tree | a80c6fea6ede10040dc8c2fe78a4fe1a7e39fede | |
| parent | af88ce5eb34b0ecdfd2f8dfcc837c353688d6c75 (diff) | |
| download | rust-608807934d41168cb30c6eee6442fe29251e40f0.tar.gz rust-608807934d41168cb30c6eee6442fe29251e40f0.zip | |
use outermost invocation span for doctest names
Fixes #70090.
| -rw-r--r-- | src/librustdoc/test.rs | 7 | ||||
| -rw-r--r-- | src/test/rustdoc-ui/auxiliary/extern_macros.rs | 7 | ||||
| -rw-r--r-- | src/test/rustdoc-ui/doctest-output.rs | 12 | ||||
| -rw-r--r-- | src/test/rustdoc-ui/doctest-output.stdout | 9 |
4 files changed, 30 insertions, 5 deletions
diff --git a/src/librustdoc/test.rs b/src/librustdoc/test.rs index e9504aa3af1..e0c0a352fba 100644 --- a/src/librustdoc/test.rs +++ b/src/librustdoc/test.rs @@ -944,7 +944,12 @@ impl<'a, 'hir, 'tcx> HirCollector<'a, 'hir, 'tcx> { // 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() { - self.collector.set_position(attrs.span.unwrap_or(DUMMY_SP)); + // Use the outermost invocation, so that doctest names come from where the docs were written. + let span = attrs + .span + .map(|span| span.ctxt().outer_expn().expansion_cause().unwrap_or(span)) + .unwrap_or(DUMMY_SP); + self.collector.set_position(span); markdown::find_testable_code( &doc, self.collector, diff --git a/src/test/rustdoc-ui/auxiliary/extern_macros.rs b/src/test/rustdoc-ui/auxiliary/extern_macros.rs new file mode 100644 index 00000000000..ee1fec4c5c2 --- /dev/null +++ b/src/test/rustdoc-ui/auxiliary/extern_macros.rs @@ -0,0 +1,7 @@ +#[macro_export] +macro_rules! attrs_on_struct { + ( $( #[$attr:meta] )* ) => { + $( #[$attr] )* + pub struct ExpandedStruct; + } +} diff --git a/src/test/rustdoc-ui/doctest-output.rs b/src/test/rustdoc-ui/doctest-output.rs index f812263c252..e0e1e061ac7 100644 --- a/src/test/rustdoc-ui/doctest-output.rs +++ b/src/test/rustdoc-ui/doctest-output.rs @@ -1,3 +1,5 @@ +// edition:2018 +// aux-build:extern_macros.rs // compile-flags:--test --test-args=--test-threads=1 // normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR" // check-pass @@ -6,6 +8,10 @@ //! assert_eq!(1 + 1, 2); //! ``` +extern crate extern_macros as macros; + +use macros::attrs_on_struct; + pub mod foo { /// ``` @@ -13,3 +19,9 @@ pub mod foo { /// ``` pub fn bar() {} } + +attrs_on_struct! { + /// ``` + /// assert!(true); + /// ``` +} diff --git a/src/test/rustdoc-ui/doctest-output.stdout b/src/test/rustdoc-ui/doctest-output.stdout index 9a55bf50196..c72bd91d1dd 100644 --- a/src/test/rustdoc-ui/doctest-output.stdout +++ b/src/test/rustdoc-ui/doctest-output.stdout @@ -1,7 +1,8 @@ -running 2 tests -test $DIR/doctest-output.rs - (line 5) ... ok -test $DIR/doctest-output.rs - foo::bar (line 11) ... ok +running 3 tests +test $DIR/doctest-output.rs - (line 7) ... ok +test $DIR/doctest-output.rs - ExpandedStruct (line 23) ... ok +test $DIR/doctest-output.rs - foo::bar (line 17) ... ok -test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out +test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out |
