about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librustdoc/scrape_examples.rs5
-rw-r--r--src/test/run-make/rustdoc-scrape-examples-whitespace/Makefile5
-rw-r--r--src/test/run-make/rustdoc-scrape-examples-whitespace/examples/ex.rs8
-rw-r--r--src/test/run-make/rustdoc-scrape-examples-whitespace/src/lib.rs3
4 files changed, 20 insertions, 1 deletions
diff --git a/src/librustdoc/scrape_examples.rs b/src/librustdoc/scrape_examples.rs
index 93292efdcb6..16882cf83d0 100644
--- a/src/librustdoc/scrape_examples.rs
+++ b/src/librustdoc/scrape_examples.rs
@@ -196,7 +196,8 @@ where
                 return;
             }
 
-            let file = tcx.sess.source_map().lookup_char_pos(span.lo()).file;
+            let source_map = tcx.sess.source_map();
+            let file = source_map.lookup_char_pos(span.lo()).file;
             let file_path = match file.name.clone() {
                 FileName::Real(real_filename) => real_filename.into_local_path(),
                 _ => None,
@@ -217,6 +218,8 @@ where
                 let fn_entries = self.calls.entry(fn_key).or_default();
 
                 trace!("Including expr: {:?}", span);
+                let enclosing_item_span =
+                    source_map.span_extend_to_prev_char(enclosing_item_span, '\n', false);
                 let location = CallLocation::new(span, enclosing_item_span, &file);
                 fn_entries.entry(abs_path).or_insert_with(mk_call_data).locations.push(location);
             }
diff --git a/src/test/run-make/rustdoc-scrape-examples-whitespace/Makefile b/src/test/run-make/rustdoc-scrape-examples-whitespace/Makefile
new file mode 100644
index 00000000000..dce8b83eefe
--- /dev/null
+++ b/src/test/run-make/rustdoc-scrape-examples-whitespace/Makefile
@@ -0,0 +1,5 @@
+deps := ex
+
+-include ../rustdoc-scrape-examples-multiple/scrape.mk
+
+all: scrape
diff --git a/src/test/run-make/rustdoc-scrape-examples-whitespace/examples/ex.rs b/src/test/run-make/rustdoc-scrape-examples-whitespace/examples/ex.rs
new file mode 100644
index 00000000000..44ff689dfc8
--- /dev/null
+++ b/src/test/run-make/rustdoc-scrape-examples-whitespace/examples/ex.rs
@@ -0,0 +1,8 @@
+struct Foo;
+impl Foo {
+  fn bar() { foobar::ok(); }
+}
+
+fn main() {
+  Foo::bar();
+}
diff --git a/src/test/run-make/rustdoc-scrape-examples-whitespace/src/lib.rs b/src/test/run-make/rustdoc-scrape-examples-whitespace/src/lib.rs
new file mode 100644
index 00000000000..28c34716c2f
--- /dev/null
+++ b/src/test/run-make/rustdoc-scrape-examples-whitespace/src/lib.rs
@@ -0,0 +1,3 @@
+// @has foobar/fn.ok.html '//*[@class="docblock scraped-example-list"]//code' '  '
+
+pub fn ok() {}