Skip to content

Commit ddf734d

Browse files
committed
extract fatal_unexpected_non_pat
1 parent 37f37a5 commit ddf734d

File tree

1 file changed

+22
-16
lines changed
  • src/libsyntax/parse/parser

1 file changed

+22
-16
lines changed

src/libsyntax/parse/parser/pat.rs

+22-16
Original file line numberDiff line numberDiff line change
@@ -210,22 +210,7 @@ impl<'a> Parser<'a> {
210210
self.parse_pat_range_starting_with_lit(begin)?
211211
}
212212
Ok(begin) => PatKind::Lit(begin),
213-
Err(mut err) => {
214-
self.cancel(&mut err);
215-
let expected = expected.unwrap_or("pattern");
216-
let msg = format!(
217-
"expected {}, found {}",
218-
expected,
219-
self.this_token_descr(),
220-
);
221-
let mut err = self.fatal(&msg);
222-
err.span_label(self.token.span, format!("expected {}", expected));
223-
let sp = self.sess.source_map().start_point(self.token.span);
224-
if let Some(sp) = self.sess.ambiguous_block_expr_parse.borrow().get(&sp) {
225-
self.sess.expr_parentheses_needed(&mut err, *sp, None);
226-
}
227-
return Err(err);
228-
}
213+
Err(err) => return self.fatal_unexpected_non_pat(err, expected),
229214
}
230215
}
231216
};
@@ -365,6 +350,27 @@ impl<'a> Parser<'a> {
365350
Ok(PatKind::Range(begin, end, respan(op_span, end_kind)))
366351
}
367352

353+
fn fatal_unexpected_non_pat(
354+
&mut self,
355+
mut err: DiagnosticBuilder<'a>,
356+
expected: Option<&'static str>,
357+
) -> PResult<'a, P<Pat>> {
358+
self.cancel(&mut err);
359+
360+
let expected = expected.unwrap_or("pattern");
361+
let msg = format!("expected {}, found {}", expected, self.this_token_descr());
362+
363+
let mut err = self.fatal(&msg);
364+
err.span_label(self.token.span, format!("expected {}", expected));
365+
366+
let sp = self.sess.source_map().start_point(self.token.span);
367+
if let Some(sp) = self.sess.ambiguous_block_expr_parse.borrow().get(&sp) {
368+
self.sess.expr_parentheses_needed(&mut err, *sp, None);
369+
}
370+
371+
Err(err)
372+
}
373+
368374
// Helper function to decide whether to parse as ident binding
369375
// or to try to do something more complex like range patterns.
370376
fn parse_as_ident(&mut self) -> bool {

0 commit comments

Comments
 (0)