Rollup merge of #93568 - willcrichton:scrape-examples-leading-whitespace, r=CraftSpider

Include all contents of first line of scraped item in Rustdoc

This fixes #93528. When scraping examples, it extends the span of the enclosing item to include all characters up to the start of the first line of the span.

r? `@camelid`
This commit is contained in:
Matthias Krüger 2022-02-08 06:47:33 +01:00 committed by GitHub
commit 338979232a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 20 additions and 1 deletions

View File

@ -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);
}

View File

@ -0,0 +1,5 @@
deps := ex
-include ../rustdoc-scrape-examples-multiple/scrape.mk
all: scrape

View File

@ -0,0 +1,8 @@
struct Foo;
impl Foo {
fn bar() { foobar::ok(); }
}
fn main() {
Foo::bar();
}

View File

@ -0,0 +1,3 @@
// @has foobar/fn.ok.html '//*[@class="docblock scraped-example-list"]//code' ' '
pub fn ok() {}