1
1
use super :: diagnostics:: { dummy_arg, ConsumeClosingDelim } ;
2
2
use 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
+ } ;
4
6
use crate :: errors:: { self , MacroExpandsToAdtField } ;
5
7
use crate :: fluent_generated as fluent;
6
8
use ast:: token:: IdentIsRaw ;
@@ -1534,10 +1536,10 @@ impl<'a> Parser<'a> {
1534
1536
err. span_label ( span, "while parsing this enum" ) ;
1535
1537
err. help ( help) ;
1536
1538
err. emit ( ) ;
1537
- ( thin_vec ! [ ] , true )
1539
+ ( thin_vec ! [ ] , Recovered :: Yes )
1538
1540
}
1539
1541
} ;
1540
- VariantData :: Struct { fields, recovered }
1542
+ VariantData :: Struct { fields, recovered : recovered . into ( ) }
1541
1543
} else if this. check ( & token:: OpenDelim ( Delimiter :: Parenthesis ) ) {
1542
1544
let body = match this. parse_tuple_struct_body ( ) {
1543
1545
Ok ( body) => body,
@@ -1622,7 +1624,7 @@ impl<'a> Parser<'a> {
1622
1624
class_name. span ,
1623
1625
generics. where_clause . has_where_token ,
1624
1626
) ?;
1625
- VariantData :: Struct { fields, recovered }
1627
+ VariantData :: Struct { fields, recovered : recovered . into ( ) }
1626
1628
}
1627
1629
// No `where` so: `struct Foo<T>;`
1628
1630
} else if self . eat ( & token:: Semi ) {
@@ -1634,7 +1636,7 @@ impl<'a> Parser<'a> {
1634
1636
class_name. span ,
1635
1637
generics. where_clause . has_where_token ,
1636
1638
) ?;
1637
- VariantData :: Struct { fields, recovered }
1639
+ VariantData :: Struct { fields, recovered : recovered . into ( ) }
1638
1640
// Tuple-style struct definition with optional where-clause.
1639
1641
} else if self . token == token:: OpenDelim ( Delimiter :: Parenthesis ) {
1640
1642
let body = VariantData :: Tuple ( self . parse_tuple_struct_body ( ) ?, DUMMY_NODE_ID ) ;
@@ -1663,14 +1665,14 @@ impl<'a> Parser<'a> {
1663
1665
class_name. span ,
1664
1666
generics. where_clause . has_where_token ,
1665
1667
) ?;
1666
- VariantData :: Struct { fields, recovered }
1668
+ VariantData :: Struct { fields, recovered : recovered . into ( ) }
1667
1669
} else if self . token == token:: OpenDelim ( Delimiter :: Brace ) {
1668
1670
let ( fields, recovered) = self . parse_record_struct_body (
1669
1671
"union" ,
1670
1672
class_name. span ,
1671
1673
generics. where_clause . has_where_token ,
1672
1674
) ?;
1673
- VariantData :: Struct { fields, recovered }
1675
+ VariantData :: Struct { fields, recovered : recovered . into ( ) }
1674
1676
} else {
1675
1677
let token_str = super :: token_descr ( & self . token ) ;
1676
1678
let msg = format ! ( "expected `where` or `{{` after union name, found {token_str}" ) ;
@@ -1687,14 +1689,14 @@ impl<'a> Parser<'a> {
1687
1689
adt_ty : & str ,
1688
1690
ident_span : Span ,
1689
1691
parsed_where : bool ,
1690
- ) -> PResult < ' a , ( ThinVec < FieldDef > , /* recovered */ bool ) > {
1692
+ ) -> PResult < ' a , ( ThinVec < FieldDef > , Recovered ) > {
1691
1693
let mut fields = ThinVec :: new ( ) ;
1692
- let mut recovered = false ;
1694
+ let mut recovered = Recovered :: No ;
1693
1695
if self . eat ( & token:: OpenDelim ( Delimiter :: Brace ) ) {
1694
1696
while self . token != token:: CloseDelim ( Delimiter :: Brace ) {
1695
1697
let field = self . parse_field_def ( adt_ty) . map_err ( |e| {
1696
1698
self . consume_block ( Delimiter :: Brace , ConsumeClosingDelim :: No ) ;
1697
- recovered = true ;
1699
+ recovered = Recovered :: Yes ;
1698
1700
e
1699
1701
} ) ;
1700
1702
match field {
@@ -2465,8 +2467,8 @@ impl<'a> Parser<'a> {
2465
2467
// `self.expected_tokens`, therefore, do not use `self.unexpected()` which doesn't
2466
2468
// account for this.
2467
2469
match self . expect_one_of ( & [ ] , & [ ] ) {
2468
- Ok ( true ) => { }
2469
- Ok ( false ) => unreachable ! ( ) ,
2470
+ Ok ( Recovered :: Yes ) => { }
2471
+ Ok ( Recovered :: No ) => unreachable ! ( ) ,
2470
2472
Err ( mut err) => {
2471
2473
// Qualifier keywords ordering check
2472
2474
enum WrongKw {
0 commit comments