fix an ICE in macro's diagnostic message
This commit is contained in:
parent
1062b698c1
commit
292ba98cb7
4 changed files with 50 additions and 5 deletions
|
|
@ -1742,14 +1742,25 @@ impl<'a> Parser<'a> {
|
|||
}
|
||||
|
||||
fn report_invalid_macro_expansion_item(&self) {
|
||||
let has_close_delim = self.sess.source_map()
|
||||
.span_to_snippet(self.prev_span)
|
||||
.map(|s| s.ends_with(")") || s.ends_with("]"))
|
||||
.unwrap_or(false);
|
||||
let right_brace_span = if has_close_delim {
|
||||
// it's safe to peel off one character only when it has the close delim
|
||||
self.prev_span.with_lo(self.prev_span.hi() - BytePos(1))
|
||||
} else {
|
||||
self.sess.source_map().next_point(self.prev_span)
|
||||
};
|
||||
|
||||
self.struct_span_err(
|
||||
self.prev_span,
|
||||
"macros that expand to items must be delimited with braces or followed by a semicolon",
|
||||
).multipart_suggestion(
|
||||
"change the delimiters to curly braces",
|
||||
vec![
|
||||
(self.prev_span.with_hi(self.prev_span.lo() + BytePos(1)), String::from(" {")),
|
||||
(self.prev_span.with_lo(self.prev_span.hi() - BytePos(1)), '}'.to_string()),
|
||||
(self.prev_span.with_hi(self.prev_span.lo() + BytePos(1)), "{".to_string()),
|
||||
(right_brace_span, '}'.to_string()),
|
||||
],
|
||||
Applicability::MaybeIncorrect,
|
||||
).span_suggestion(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue