@@ -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