diff options
| author | Yuki Okushi <huyuumi.dev@gmail.com> | 2020-01-29 18:56:32 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-01-29 18:56:32 +0900 |
| commit | 0e365583f3d9aa0fba5a0110252055c3d10ad87c (patch) | |
| tree | 1d303317884f2fdeb3bbdc485cb69b621be1aefc /src | |
| parent | 288cabde8caf11ec89bb769129cc8d0be76ee45b (diff) | |
| parent | 79d8c9beab960e81c73788208da4bbd39137d85b (diff) | |
Rollup merge of #68611 - MichaelBurge:master, r=estebank
Correct ICE caused by macros generating invalid spans. Closes #68605
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_errors/emitter.rs | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/librustc_errors/emitter.rs b/src/librustc_errors/emitter.rs index bf660d188b2..7ef623807d0 100644 --- a/src/librustc_errors/emitter.rs +++ b/src/librustc_errors/emitter.rs @@ -19,6 +19,7 @@ use crate::{ pluralize, CodeSuggestion, Diagnostic, DiagnosticId, Level, SubDiagnostic, SuggestionStyle, }; +use log::*; use rustc_data_structures::fx::FxHashMap; use rustc_data_structures::sync::Lrc; use rustc_span::hygiene::{ExpnKind, MacroKind}; @@ -2108,7 +2109,13 @@ impl<'a> Drop for WritableDst<'a> { /// Whether the original and suggested code are visually similar enough to warrant extra wording. pub fn is_case_difference(sm: &SourceMap, suggested: &str, sp: Span) -> bool { // FIXME: this should probably be extended to also account for `FO0` → `FOO` and unicode. - let found = sm.span_to_snippet(sp).unwrap(); + let found = match sm.span_to_snippet(sp) { + Ok(snippet) => snippet, + Err(e) => { + warn!("Invalid span {:?}. Err={:?}", sp, e); + return false; + } + }; let ascii_confusables = &['c', 'f', 'i', 'k', 'o', 's', 'u', 'v', 'w', 'x', 'y', 'z']; // All the chars that differ in capitalization are confusable (above): let confusable = found |
