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,
|
Some(ref sm) => sm,
|
||||||
None => return Ok(()),
|
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
|
// Suggestions coming from macros can have malformed spans. This is a heavy handed
|
||||||
// approach to avoid ICEs by ignoring the suggestion outright.
|
// approach to avoid ICEs by ignoring the suggestion outright.
|
||||||
return Ok(());
|
return Ok(());
|
||||||
|
@ -1497,9 +1501,6 @@ impl EmitterWriter {
|
||||||
Some(Style::HeaderMsg),
|
Some(Style::HeaderMsg),
|
||||||
);
|
);
|
||||||
|
|
||||||
// Render the replacements for each suggestion
|
|
||||||
let suggestions = suggestion.splice_lines(&**sm);
|
|
||||||
|
|
||||||
let mut row_num = 2;
|
let mut row_num = 2;
|
||||||
let mut notice_capitalization = false;
|
let mut notice_capitalization = false;
|
||||||
for (complete, parts, only_capitalization) in suggestions.iter().take(MAX_SUGGESTIONS) {
|
for (complete, parts, only_capitalization) in suggestions.iter().take(MAX_SUGGESTIONS) {
|
||||||
|
|
|
@ -144,18 +144,6 @@ pub struct SubstitutionPart {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl CodeSuggestion {
|
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
|
/// Returns the assembled code suggestions, whether they should be shown with an underline
|
||||||
/// and whether the substitution only differs in capitalization.
|
/// and whether the substitution only differs in capitalization.
|
||||||
pub fn splice_lines(&self, cm: &SourceMap) -> Vec<(String, Vec<SubstitutionPart>, bool)> {
|
pub fn splice_lines(&self, cm: &SourceMap) -> Vec<(String, Vec<SubstitutionPart>, bool)> {
|
||||||
|
@ -187,6 +175,15 @@ impl CodeSuggestion {
|
||||||
|
|
||||||
self.substitutions
|
self.substitutions
|
||||||
.iter()
|
.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()
|
.cloned()
|
||||||
.map(|mut substitution| {
|
.map(|mut substitution| {
|
||||||
// Assumption: all spans are in the same file, and all spans
|
// 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 _;
|
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
|
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
|
||||||
|
|
||||||
error: internal compiler error: unexpected panic
|
error: internal compiler error: unexpected panic
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue