diff options
| author | bors <bors@rust-lang.org> | 2020-05-17 16:20:19 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2020-05-17 16:20:19 +0000 |
| commit | d79f1bd31a1401b5d08096fcdf9a9eb23ddf95df (patch) | |
| tree | 3f05098e7dc5e8c5b27b9d2bf6d5e7e91150806c /src/librustc_span/source_map.rs | |
| parent | 34cce58d81f006a5406fcae918db4492e6cf2784 (diff) | |
| parent | 2b3d99d31a0660645cfd338895209da5616a84af (diff) | |
Auto merge of #72295 - RalfJung:rollup-icmhbs7, r=RalfJung
Rollup of 3 pull requests Successful merges: - #72259 (Disallow forbidden usage of non-ascii identifiers.) - #72261 (Break out early on empty span when generate_fn_span) - #72291 (bootstrap: fix typo) Failed merges: r? @ghost
Diffstat (limited to 'src/librustc_span/source_map.rs')
| -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 |
