@@ -495,64 +495,6 @@ impl<'a> Parser<'a> {
495495 }
496496 }
497497
498- /// Check for erroneous `ident { }`; if matches, signal error and
499- /// recover (without consuming any expected input token). Returns
500- /// true if and only if input was consumed for recovery.
501- pub fn check_for_erroneous_unit_struct_expecting ( & mut self ,
502- expected : & [ token:: Token ] )
503- -> bool {
504- if self . token == token:: OpenDelim ( token:: Brace )
505- && expected. iter ( ) . all ( |t| * t != token:: OpenDelim ( token:: Brace ) )
506- && self . look_ahead ( 1 , |t| * t == token:: CloseDelim ( token:: Brace ) ) {
507- // matched; signal non-fatal error and recover.
508- let span = self . span ;
509- self . span_err ( span, "unit-like struct construction is written with no trailing `{ }`" ) ;
510- self . eat ( & token:: OpenDelim ( token:: Brace ) ) ;
511- self . eat ( & token:: CloseDelim ( token:: Brace ) ) ;
512- true
513- } else {
514- false
515- }
516- }
517-
518- /// Commit to parsing a complete expression `e` expected to be
519- /// followed by some token from the set edible + inedible. Recover
520- /// from anticipated input errors, discarding erroneous characters.
521- pub fn commit_expr ( & mut self , e : & Expr , edible : & [ token:: Token ] ,
522- inedible : & [ token:: Token ] ) -> PResult < ' a , ( ) > {
523- debug ! ( "commit_expr {:?}" , e) ;
524- if let ExprKind :: Path ( ..) = e. node {
525- // might be unit-struct construction; check for recoverableinput error.
526- let expected = edible. iter ( )
527- . cloned ( )
528- . chain ( inedible. iter ( ) . cloned ( ) )
529- . collect :: < Vec < _ > > ( ) ;
530- self . check_for_erroneous_unit_struct_expecting ( & expected[ ..] ) ;
531- }
532- self . expect_one_of ( edible, inedible)
533- }
534-
535- pub fn commit_expr_expecting ( & mut self , e : & Expr , edible : token:: Token ) -> PResult < ' a , ( ) > {
536- self . commit_expr ( e, & [ edible] , & [ ] )
537- }
538-
539- /// Commit to parsing a complete statement `s`, which expects to be
540- /// followed by some token from the set edible + inedible. Check
541- /// for recoverable input errors, discarding erroneous characters.
542- pub fn commit_stmt ( & mut self , edible : & [ token:: Token ] ,
543- inedible : & [ token:: Token ] ) -> PResult < ' a , ( ) > {
544- if self . last_token
545- . as_ref ( )
546- . map_or ( false , |t| t. is_ident ( ) || t. is_path ( ) ) {
547- let expected = edible. iter ( )
548- . cloned ( )
549- . chain ( inedible. iter ( ) . cloned ( ) )
550- . collect :: < Vec < _ > > ( ) ;
551- self . check_for_erroneous_unit_struct_expecting ( & expected) ;
552- }
553- self . expect_one_of ( edible, inedible)
554- }
555-
556498 /// returns the span of expr, if it was not interpolated or the span of the interpolated token
557499 fn interpolated_or_expr_span ( & self ,
558500 expr : PResult < ' a , P < Expr > > )
@@ -1247,7 +1189,7 @@ impl<'a> Parser<'a> {
12471189 let default = if self . check ( & token:: Eq ) {
12481190 self . bump ( ) ;
12491191 let expr = self . parse_expr ( ) ?;
1250- self . commit_expr_expecting ( & expr , token:: Semi ) ?;
1192+ self . expect ( & token:: Semi ) ?;
12511193 Some ( expr)
12521194 } else {
12531195 self . expect ( & token:: Semi ) ?;
@@ -2195,8 +2137,7 @@ impl<'a> Parser<'a> {
21952137 let mut trailing_comma = false ;
21962138 while self . token != token:: CloseDelim ( token:: Paren ) {
21972139 es. push ( self . parse_expr ( ) ?) ;
2198- self . commit_expr ( & es. last ( ) . unwrap ( ) , & [ ] ,
2199- & [ token:: Comma , token:: CloseDelim ( token:: Paren ) ] ) ?;
2140+ self . expect_one_of ( & [ ] , & [ token:: Comma , token:: CloseDelim ( token:: Paren ) ] ) ?;
22002141 if self . check ( & token:: Comma ) {
22012142 trailing_comma = true ;
22022143
@@ -2407,9 +2348,8 @@ impl<'a> Parser<'a> {
24072348 }
24082349 }
24092350
2410- match self . commit_expr ( & fields. last ( ) . unwrap ( ) . expr ,
2411- & [ token:: Comma ] ,
2412- & [ token:: CloseDelim ( token:: Brace ) ] ) {
2351+ match self . expect_one_of ( & [ token:: Comma ] ,
2352+ & [ token:: CloseDelim ( token:: Brace ) ] ) {
24132353 Ok ( ( ) ) => { }
24142354 Err ( mut e) => {
24152355 e. emit ( ) ;
@@ -2662,7 +2602,7 @@ impl<'a> Parser<'a> {
26622602 self . bump ( ) ;
26632603 let ix = self . parse_expr ( ) ?;
26642604 hi = self . span . hi ;
2665- self . commit_expr_expecting ( & ix , token:: CloseDelim ( token:: Bracket ) ) ?;
2605+ self . expect ( & token:: CloseDelim ( token:: Bracket ) ) ?;
26662606 let index = self . mk_index ( e, ix) ;
26672607 e = self . mk_expr ( lo, hi, index, ThinVec :: new ( ) )
26682608 }
@@ -3329,8 +3269,7 @@ impl<'a> Parser<'a> {
33293269 let lo = self . last_span . lo ;
33303270 let discriminant = self . parse_expr_res ( Restrictions :: RESTRICTION_NO_STRUCT_LITERAL ,
33313271 None ) ?;
3332- if let Err ( mut e) = self . commit_expr_expecting ( & discriminant,
3333- token:: OpenDelim ( token:: Brace ) ) {
3272+ if let Err ( mut e) = self . expect ( & token:: OpenDelim ( token:: Brace ) ) {
33343273 if self . token == token:: Token :: Semi {
33353274 e. span_note ( match_span, "did you mean to remove this `match` keyword?" ) ;
33363275 }
@@ -3376,7 +3315,7 @@ impl<'a> Parser<'a> {
33763315 && self . token != token:: CloseDelim ( token:: Brace ) ;
33773316
33783317 if require_comma {
3379- self . commit_expr ( & expr , & [ token:: Comma ] , & [ token:: CloseDelim ( token:: Brace ) ] ) ?;
3318+ self . expect_one_of ( & [ token:: Comma ] , & [ token:: CloseDelim ( token:: Brace ) ] ) ?;
33803319 } else {
33813320 self . eat ( & token:: Comma ) ;
33823321 }
@@ -4118,7 +4057,7 @@ impl<'a> Parser<'a> {
41184057 _ => { // all other kinds of statements:
41194058 let mut hi = span. hi ;
41204059 if classify:: stmt_ends_with_semi ( & node) {
4121- self . commit_stmt ( & [ token:: Semi ] , & [ ] ) ?;
4060+ self . expect ( & token:: Semi ) ?;
41224061 hi = self . last_span . hi ;
41234062 }
41244063
@@ -4196,7 +4135,7 @@ impl<'a> Parser<'a> {
41964135 if classify:: expr_requires_semi_to_be_stmt ( & e) {
41974136 // Just check for errors and recover; do not eat semicolon yet.
41984137 if let Err ( mut e) =
4199- self . commit_stmt ( & [ ] , & [ token:: Semi , token:: CloseDelim ( token:: Brace ) ] )
4138+ self . expect_one_of ( & [ ] , & [ token:: Semi , token:: CloseDelim ( token:: Brace ) ] )
42004139 {
42014140 e. emit ( ) ;
42024141 self . recover_stmt ( ) ;
@@ -4863,7 +4802,7 @@ impl<'a> Parser<'a> {
48634802 let typ = self . parse_ty_sum ( ) ?;
48644803 self . expect ( & token:: Eq ) ?;
48654804 let expr = self . parse_expr ( ) ?;
4866- self . commit_expr_expecting ( & expr , token:: Semi ) ?;
4805+ self . expect ( & token:: Semi ) ?;
48674806 ( name, ast:: ImplItemKind :: Const ( typ, expr) )
48684807 } else {
48694808 let ( name, inner_attrs, node) = self . parse_impl_method ( & vis) ?;
@@ -5287,7 +5226,7 @@ impl<'a> Parser<'a> {
52875226 let ty = self . parse_ty_sum ( ) ?;
52885227 self . expect ( & token:: Eq ) ?;
52895228 let e = self . parse_expr ( ) ?;
5290- self . commit_expr_expecting ( & e , token:: Semi ) ?;
5229+ self . expect ( & token:: Semi ) ?;
52915230 let item = match m {
52925231 Some ( m) => ItemKind :: Static ( ty, m, e) ,
52935232 None => ItemKind :: Const ( ty, e) ,
0 commit comments