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 ;
@@ -1518,10 +1520,10 @@ impl<'a> Parser<'a> {
1518
1520
err. span_label ( span, "while parsing this enum" ) ;
1519
1521
err. help ( help) ;
1520
1522
err. emit ( ) ;
1521
- ( thin_vec ! [ ] , true )
1523
+ ( thin_vec ! [ ] , Recovered :: Yes )
1522
1524
}
1523
1525
} ;
1524
- VariantData :: Struct { fields, recovered }
1526
+ VariantData :: Struct { fields, recovered : recovered . into ( ) }
1525
1527
} else if this. check ( & token:: OpenDelim ( Delimiter :: Parenthesis ) ) {
1526
1528
let body = match this. parse_tuple_struct_body ( ) {
1527
1529
Ok ( body) => body,
@@ -1606,7 +1608,7 @@ impl<'a> Parser<'a> {
1606
1608
class_name. span ,
1607
1609
generics. where_clause . has_where_token ,
1608
1610
) ?;
1609
- VariantData :: Struct { fields, recovered }
1611
+ VariantData :: Struct { fields, recovered : recovered . into ( ) }
1610
1612
}
1611
1613
// No `where` so: `struct Foo<T>;`
1612
1614
} else if self . eat ( & token:: Semi ) {
@@ -1618,8 +1620,8 @@ impl<'a> Parser<'a> {
1618
1620
class_name. span ,
1619
1621
generics. where_clause . has_where_token ,
1620
1622
) ?;
1621
- VariantData :: Struct { fields, recovered }
1622
- // Tuple-style struct definition with optional where-clause.
1623
+ VariantData :: Struct { fields, recovered : recovered . into ( ) }
1624
+ // Tuple-style struct definition with optional where-clause.
1623
1625
} else if self . token == token:: OpenDelim ( Delimiter :: Parenthesis ) {
1624
1626
let body = VariantData :: Tuple ( self . parse_tuple_struct_body ( ) ?, DUMMY_NODE_ID ) ;
1625
1627
generics. where_clause = self . parse_where_clause ( ) ?;
@@ -1647,14 +1649,14 @@ impl<'a> Parser<'a> {
1647
1649
class_name. span ,
1648
1650
generics. where_clause . has_where_token ,
1649
1651
) ?;
1650
- VariantData :: Struct { fields, recovered }
1652
+ VariantData :: Struct { fields, recovered : recovered . into ( ) }
1651
1653
} else if self . token == token:: OpenDelim ( Delimiter :: Brace ) {
1652
1654
let ( fields, recovered) = self . parse_record_struct_body (
1653
1655
"union" ,
1654
1656
class_name. span ,
1655
1657
generics. where_clause . has_where_token ,
1656
1658
) ?;
1657
- VariantData :: Struct { fields, recovered }
1659
+ VariantData :: Struct { fields, recovered : recovered . into ( ) }
1658
1660
} else {
1659
1661
let token_str = super :: token_descr ( & self . token ) ;
1660
1662
let msg = format ! ( "expected `where` or `{{` after union name, found {token_str}" ) ;
@@ -1671,14 +1673,14 @@ impl<'a> Parser<'a> {
1671
1673
adt_ty : & str ,
1672
1674
ident_span : Span ,
1673
1675
parsed_where : bool ,
1674
- ) -> PResult < ' a , ( ThinVec < FieldDef > , /* recovered */ bool ) > {
1676
+ ) -> PResult < ' a , ( ThinVec < FieldDef > , Recovered ) > {
1675
1677
let mut fields = ThinVec :: new ( ) ;
1676
- let mut recovered = false ;
1678
+ let mut recovered = Recovered :: No ;
1677
1679
if self . eat ( & token:: OpenDelim ( Delimiter :: Brace ) ) {
1678
1680
while self . token != token:: CloseDelim ( Delimiter :: Brace ) {
1679
1681
let field = self . parse_field_def ( adt_ty) . map_err ( |e| {
1680
1682
self . consume_block ( Delimiter :: Brace , ConsumeClosingDelim :: No ) ;
1681
- recovered = true ;
1683
+ recovered = Recovered :: Yes ;
1682
1684
e
1683
1685
} ) ;
1684
1686
match field {
@@ -2446,8 +2448,8 @@ impl<'a> Parser<'a> {
2446
2448
// `self.expected_tokens`, therefore, do not use `self.unexpected()` which doesn't
2447
2449
// account for this.
2448
2450
match self . expect_one_of ( & [ ] , & [ ] ) {
2449
- Ok ( true ) => { }
2450
- Ok ( false ) => unreachable ! ( ) ,
2451
+ Ok ( Recovered :: Yes ) => { }
2452
+ Ok ( Recovered :: No ) => unreachable ! ( ) ,
2451
2453
Err ( mut err) => {
2452
2454
// Qualifier keywords ordering check
2453
2455
enum WrongKw {
0 commit comments