review comments
This commit is contained in:
parent
10a9ea4c26
commit
03240e1359
3 changed files with 15 additions and 17 deletions
|
@ -1475,7 +1475,11 @@ impl EmitterWriter {
|
|||
Some(ref sm) => sm,
|
||||
None => return Ok(()),
|
||||
};
|
||||
if !suggestion.has_valid_spans(&**sm) {
|
||||
|
||||
// Render the replacements for each suggestion
|
||||
let suggestions = suggestion.splice_lines(&**sm);
|
||||
|
||||
if suggestions.is_empty() {
|
||||
// Suggestions coming from macros can have malformed spans. This is a heavy handed
|
||||
// approach to avoid ICEs by ignoring the suggestion outright.
|
||||
return Ok(());
|
||||
|
@ -1497,9 +1501,6 @@ impl EmitterWriter {
|
|||
Some(Style::HeaderMsg),
|
||||
);
|
||||
|
||||
// Render the replacements for each suggestion
|
||||
let suggestions = suggestion.splice_lines(&**sm);
|
||||
|
||||
let mut row_num = 2;
|
||||
let mut notice_capitalization = false;
|
||||
for (complete, parts, only_capitalization) in suggestions.iter().take(MAX_SUGGESTIONS) {
|
||||
|
|
|
@ -144,18 +144,6 @@ pub struct SubstitutionPart {
|
|||
}
|
||||
|
||||
impl CodeSuggestion {
|
||||
/// Suggestions coming from macros can have malformed spans. This is a heavy handed approach
|
||||
/// to avoid ICEs by ignoring the suggestion outright.
|
||||
pub fn has_valid_spans(&self, cm: &SourceMap) -> bool {
|
||||
!self.substitutions.iter().any(|subst| {
|
||||
let invalid = subst.parts.iter().any(|item| cm.is_valid_span(item.span).is_err());
|
||||
if invalid {
|
||||
debug!("malformed span in suggestion: {:?}", subst);
|
||||
}
|
||||
invalid
|
||||
})
|
||||
}
|
||||
|
||||
/// Returns the assembled code suggestions, whether they should be shown with an underline
|
||||
/// and whether the substitution only differs in capitalization.
|
||||
pub fn splice_lines(&self, cm: &SourceMap) -> Vec<(String, Vec<SubstitutionPart>, bool)> {
|
||||
|
@ -187,6 +175,15 @@ impl CodeSuggestion {
|
|||
|
||||
self.substitutions
|
||||
.iter()
|
||||
.filter(|subst| {
|
||||
// Suggestions coming from macros can have malformed spans. This is a heavy
|
||||
// handed approach to avoid ICEs by ignoring the suggestion outright.
|
||||
let invalid = subst.parts.iter().any(|item| cm.is_valid_span(item.span).is_err());
|
||||
if invalid {
|
||||
debug!("splice_lines: suggestion contains an invalid span: {:?}", subst);
|
||||
}
|
||||
!invalid
|
||||
})
|
||||
.cloned()
|
||||
.map(|mut substitution| {
|
||||
// Assumption: all spans are in the same file, and all spans
|
||||
|
|
|
@ -10,7 +10,7 @@ error: internal compiler error: mutable allocation in constant
|
|||
LL | const MUTABLE_BEHIND_RAW: *mut i32 = &UnsafeCell::new(42) as *const _ as *mut _;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
thread 'rustc' panicked at 'no errors encountered even though `delay_span_bug` issued', src/librustc_errors/lib.rs:359:17
|
||||
thread 'rustc' panicked at 'no errors encountered even though `delay_span_bug` issued', src/librustc_errors/lib.rs:356:17
|
||||
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
|
||||
|
||||
error: internal compiler error: unexpected panic
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue