diff options
| author | Ralf Jung <post@ralfj.de> | 2020-05-17 16:24:27 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-05-17 16:24:27 +0200 |
| commit | 65833dcd3d565c0efcc8fe81f3d3baa51f7559ba (patch) | |
| tree | c79e3096f0a3e6070591a833254b36f80839e98e /src | |
| parent | 49b81cae86f0b72d0351ad925aa8efde47ca6109 (diff) | |
| parent | 2e1c2a6d0a0d3785802c73d13039a0f0eea36b7c (diff) | |
| download | rust-65833dcd3d565c0efcc8fe81f3d3baa51f7559ba.tar.gz rust-65833dcd3d565c0efcc8fe81f3d3baa51f7559ba.zip | |
Rollup merge of #72261 - csmoe:issue-72095, r=estebank
Break out early on empty span when generate_fn_span Closes #72095 r? @oli-obk cc @estebank @tmandry
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_span/source_map.rs | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/src/librustc_span/source_map.rs b/src/librustc_span/source_map.rs index d27aae0d6ed..51f55417663 100644 --- a/src/librustc_span/source_map.rs +++ b/src/librustc_span/source_map.rs @@ -910,14 +910,23 @@ impl SourceMap { pub fn generate_fn_name_span(&self, span: Span) -> Option<Span> { let prev_span = self.span_extend_to_prev_str(span, "fn", true); - self.span_to_snippet(prev_span) - .map(|snippet| { - let len = snippet - .find(|c: char| !c.is_alphanumeric() && c != '_') - .expect("no label after fn"); - prev_span.with_hi(BytePos(prev_span.lo().0 + len as u32)) - }) - .ok() + if let Ok(snippet) = self.span_to_snippet(prev_span) { + debug!( + "generate_fn_name_span: span={:?}, prev_span={:?}, snippet={:?}", + span, prev_span, snippet + ); + + if snippet.is_empty() { + return None; + }; + + let len = snippet + .find(|c: char| !c.is_alphanumeric() && c != '_') + .expect("no label after fn"); + Some(prev_span.with_hi(BytePos(prev_span.lo().0 + len as u32))) + } else { + None + } } /// Takes the span of a type parameter in a function signature and try to generate a span for |
