@@ -210,22 +210,7 @@ impl<'a> Parser<'a> {
210
210
self . parse_pat_range_starting_with_lit ( begin) ?
211
211
}
212
212
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) ,
229
214
}
230
215
}
231
216
} ;
@@ -365,6 +350,27 @@ impl<'a> Parser<'a> {
365
350
Ok ( PatKind :: Range ( begin, end, respan ( op_span, end_kind) ) )
366
351
}
367
352
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
+
368
374
// Helper function to decide whether to parse as ident binding
369
375
// or to try to do something more complex like range patterns.
370
376
fn parse_as_ident ( & mut self ) -> bool {
0 commit comments