about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorRalf Jung <post@ralfj.de>2020-05-17 16:24:27 +0200
committerGitHub <noreply@github.com>2020-05-17 16:24:27 +0200
commit65833dcd3d565c0efcc8fe81f3d3baa51f7559ba (patch)
treec79e3096f0a3e6070591a833254b36f80839e98e /src
parent49b81cae86f0b72d0351ad925aa8efde47ca6109 (diff)
parent2e1c2a6d0a0d3785802c73d13039a0f0eea36b7c (diff)
downloadrust-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.rs25
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