Add 'span_to_snippet' shortcut.
This commit is contained in:
parent
1b118607ec
commit
56b39fba56
2 changed files with 13 additions and 16 deletions
|
@ -14,7 +14,7 @@ use crate::ThinVec;
|
|||
use crate::util::parser::AssocOp;
|
||||
use errors::{Applicability, DiagnosticBuilder, DiagnosticId};
|
||||
use rustc_data_structures::fx::FxHashSet;
|
||||
use syntax_pos::{Span, DUMMY_SP, MultiSpan};
|
||||
use syntax_pos::{Span, DUMMY_SP, MultiSpan, SpanSnippetError};
|
||||
use log::{debug, trace};
|
||||
use std::mem;
|
||||
|
||||
|
@ -199,6 +199,10 @@ impl<'a> Parser<'a> {
|
|||
&self.sess.span_diagnostic
|
||||
}
|
||||
|
||||
crate fn span_to_snippet(&self, span: Span) -> Result<String, SpanSnippetError> {
|
||||
self.sess.source_map().span_to_snippet(span)
|
||||
}
|
||||
|
||||
crate fn expected_ident_found(&self) -> DiagnosticBuilder<'a> {
|
||||
let mut err = self.struct_span_err(
|
||||
self.token.span,
|
||||
|
@ -719,8 +723,6 @@ impl<'a> Parser<'a> {
|
|||
path.span = ty_span.to(self.prev_span);
|
||||
|
||||
let ty_str = self
|
||||
.sess
|
||||
.source_map()
|
||||
.span_to_snippet(ty_span)
|
||||
.unwrap_or_else(|_| pprust::ty_to_string(&ty));
|
||||
self.diagnostic()
|
||||
|
@ -891,7 +893,7 @@ impl<'a> Parser<'a> {
|
|||
err.span_label(await_sp, "while parsing this incorrect await expression");
|
||||
err
|
||||
})?;
|
||||
let expr_str = self.sess.source_map().span_to_snippet(expr.span)
|
||||
let expr_str = self.span_to_snippet(expr.span)
|
||||
.unwrap_or_else(|_| pprust::expr_to_string(&expr));
|
||||
let suggestion = format!("{}.await{}", expr_str, if is_question { "?" } else { "" });
|
||||
let sp = lo.to(expr.span);
|
||||
|
@ -940,8 +942,6 @@ impl<'a> Parser<'a> {
|
|||
self.bump();
|
||||
|
||||
let pat_str = self
|
||||
.sess
|
||||
.source_map()
|
||||
// Remove the `(` from the span of the pattern:
|
||||
.span_to_snippet(pat.span.trim_start(begin_par_sp).unwrap())
|
||||
.unwrap_or_else(|_| pprust::pat_to_string(&pat));
|
||||
|
|
|
@ -3071,10 +3071,7 @@ impl<'a> Parser<'a> {
|
|||
id: ast::DUMMY_NODE_ID
|
||||
}));
|
||||
|
||||
let expr_str = self
|
||||
.sess
|
||||
.source_map()
|
||||
.span_to_snippet(expr.span)
|
||||
let expr_str = self.span_to_snippet(expr.span)
|
||||
.unwrap_or_else(|_| pprust::expr_to_string(&expr));
|
||||
|
||||
self.struct_span_err(self.token.span, &msg)
|
||||
|
@ -3796,7 +3793,7 @@ impl<'a> Parser<'a> {
|
|||
let seq_span = pat.span.to(self.prev_span);
|
||||
let mut err = self.struct_span_err(comma_span,
|
||||
"unexpected `,` in pattern");
|
||||
if let Ok(seq_snippet) = self.sess.source_map().span_to_snippet(seq_span) {
|
||||
if let Ok(seq_snippet) = self.span_to_snippet(seq_span) {
|
||||
err.span_suggestion(
|
||||
seq_span,
|
||||
"try adding parentheses to match on a tuple..",
|
||||
|
@ -4145,7 +4142,7 @@ impl<'a> Parser<'a> {
|
|||
let parser_snapshot_after_type = self.clone();
|
||||
mem::replace(self, parser_snapshot_before_type);
|
||||
|
||||
let snippet = self.sess.source_map().span_to_snippet(pat.span).unwrap();
|
||||
let snippet = self.span_to_snippet(pat.span).unwrap();
|
||||
err.span_label(pat.span, format!("while parsing the type for `{}`", snippet));
|
||||
(Some((parser_snapshot_after_type, colon_sp, err)), None)
|
||||
}
|
||||
|
@ -4565,7 +4562,7 @@ impl<'a> Parser<'a> {
|
|||
if self.eat(&token::Semi) {
|
||||
stmt_span = stmt_span.with_hi(self.prev_span.hi());
|
||||
}
|
||||
if let Ok(snippet) = self.sess.source_map().span_to_snippet(stmt_span) {
|
||||
if let Ok(snippet) = self.span_to_snippet(stmt_span) {
|
||||
e.span_suggestion(
|
||||
stmt_span,
|
||||
"try placing this code inside a block",
|
||||
|
@ -4738,7 +4735,7 @@ impl<'a> Parser<'a> {
|
|||
lo.to(self.prev_span),
|
||||
"parenthesized lifetime bounds are not supported"
|
||||
);
|
||||
if let Ok(snippet) = self.sess.source_map().span_to_snippet(inner_span) {
|
||||
if let Ok(snippet) = self.span_to_snippet(inner_span) {
|
||||
err.span_suggestion_short(
|
||||
lo.to(self.prev_span),
|
||||
"remove the parentheses",
|
||||
|
@ -4796,7 +4793,7 @@ impl<'a> Parser<'a> {
|
|||
let mut new_bound_list = String::new();
|
||||
if !bounds.is_empty() {
|
||||
let mut snippets = bounds.iter().map(|bound| bound.span())
|
||||
.map(|span| self.sess.source_map().span_to_snippet(span));
|
||||
.map(|span| self.span_to_snippet(span));
|
||||
while let Some(Ok(snippet)) = snippets.next() {
|
||||
new_bound_list.push_str(" + ");
|
||||
new_bound_list.push_str(&snippet);
|
||||
|
@ -7415,7 +7412,7 @@ impl<'a> Parser<'a> {
|
|||
sp, &suggestion, format!(" {} ", kw), Applicability::MachineApplicable
|
||||
);
|
||||
} else {
|
||||
if let Ok(snippet) = self.sess.source_map().span_to_snippet(ident_sp) {
|
||||
if let Ok(snippet) = self.span_to_snippet(ident_sp) {
|
||||
err.span_suggestion(
|
||||
full_sp,
|
||||
"if you meant to call a macro, try",
|
||||
|
|
Loading…
Add table
Reference in a new issue