11use super :: diagnostics:: { dummy_arg, ConsumeClosingDelim } ;
22use super :: ty:: { AllowPlus , RecoverQPath , RecoverReturnSign } ;
3- use super :: { AttrWrapper , FollowedByType , ForceCollect , Parser , PathStyle , TrailingToken } ;
3+ use super :: {
4+ AttrWrapper , FollowedByType , ForceCollect , Parser , PathStyle , Recovered , TrailingToken ,
5+ } ;
46use crate :: errors:: { self , MacroExpandsToAdtField } ;
57use crate :: fluent_generated as fluent;
68use ast:: token:: IdentIsRaw ;
@@ -1534,10 +1536,10 @@ impl<'a> Parser<'a> {
15341536 err. span_label ( span, "while parsing this enum" ) ;
15351537 err. help ( help) ;
15361538 err. emit ( ) ;
1537- ( thin_vec ! [ ] , true )
1539+ ( thin_vec ! [ ] , Recovered :: Yes )
15381540 }
15391541 } ;
1540- VariantData :: Struct { fields, recovered }
1542+ VariantData :: Struct { fields, recovered : recovered . into ( ) }
15411543 } else if this. check ( & token:: OpenDelim ( Delimiter :: Parenthesis ) ) {
15421544 let body = match this. parse_tuple_struct_body ( ) {
15431545 Ok ( body) => body,
@@ -1622,7 +1624,7 @@ impl<'a> Parser<'a> {
16221624 class_name. span ,
16231625 generics. where_clause . has_where_token ,
16241626 ) ?;
1625- VariantData :: Struct { fields, recovered }
1627+ VariantData :: Struct { fields, recovered : recovered . into ( ) }
16261628 }
16271629 // No `where` so: `struct Foo<T>;`
16281630 } else if self . eat ( & token:: Semi ) {
@@ -1634,7 +1636,7 @@ impl<'a> Parser<'a> {
16341636 class_name. span ,
16351637 generics. where_clause . has_where_token ,
16361638 ) ?;
1637- VariantData :: Struct { fields, recovered }
1639+ VariantData :: Struct { fields, recovered : recovered . into ( ) }
16381640 // Tuple-style struct definition with optional where-clause.
16391641 } else if self . token == token:: OpenDelim ( Delimiter :: Parenthesis ) {
16401642 let body = VariantData :: Tuple ( self . parse_tuple_struct_body ( ) ?, DUMMY_NODE_ID ) ;
@@ -1663,14 +1665,14 @@ impl<'a> Parser<'a> {
16631665 class_name. span ,
16641666 generics. where_clause . has_where_token ,
16651667 ) ?;
1666- VariantData :: Struct { fields, recovered }
1668+ VariantData :: Struct { fields, recovered : recovered . into ( ) }
16671669 } else if self . token == token:: OpenDelim ( Delimiter :: Brace ) {
16681670 let ( fields, recovered) = self . parse_record_struct_body (
16691671 "union" ,
16701672 class_name. span ,
16711673 generics. where_clause . has_where_token ,
16721674 ) ?;
1673- VariantData :: Struct { fields, recovered }
1675+ VariantData :: Struct { fields, recovered : recovered . into ( ) }
16741676 } else {
16751677 let token_str = super :: token_descr ( & self . token ) ;
16761678 let msg = format ! ( "expected `where` or `{{` after union name, found {token_str}" ) ;
@@ -1687,14 +1689,14 @@ impl<'a> Parser<'a> {
16871689 adt_ty : & str ,
16881690 ident_span : Span ,
16891691 parsed_where : bool ,
1690- ) -> PResult < ' a , ( ThinVec < FieldDef > , /* recovered */ bool ) > {
1692+ ) -> PResult < ' a , ( ThinVec < FieldDef > , Recovered ) > {
16911693 let mut fields = ThinVec :: new ( ) ;
1692- let mut recovered = false ;
1694+ let mut recovered = Recovered :: No ;
16931695 if self . eat ( & token:: OpenDelim ( Delimiter :: Brace ) ) {
16941696 while self . token != token:: CloseDelim ( Delimiter :: Brace ) {
16951697 let field = self . parse_field_def ( adt_ty) . map_err ( |e| {
16961698 self . consume_block ( Delimiter :: Brace , ConsumeClosingDelim :: No ) ;
1697- recovered = true ;
1699+ recovered = Recovered :: Yes ;
16981700 e
16991701 } ) ;
17001702 match field {
@@ -2465,8 +2467,8 @@ impl<'a> Parser<'a> {
24652467 // `self.expected_tokens`, therefore, do not use `self.unexpected()` which doesn't
24662468 // account for this.
24672469 match self . expect_one_of ( & [ ] , & [ ] ) {
2468- Ok ( true ) => { }
2469- Ok ( false ) => unreachable ! ( ) ,
2470+ Ok ( Recovered :: Yes ) => { }
2471+ Ok ( Recovered :: No ) => unreachable ! ( ) ,
24702472 Err ( mut err) => {
24712473 // Qualifier keywords ordering check
24722474 enum WrongKw {
0 commit comments