1
1
use super :: { ForceCollect , Parser , PathStyle , TrailingToken } ;
2
2
use crate :: errors:: {
3
- AmbiguousRangePattern , BoxNotPat , DotDotDotForRemainingFields ,
4
- DotDotDotRangeToPatternNotAllowed , DotDotDotRestPattern , EnumPatternInsteadOfIdentifier ,
5
- ExpectedBindingLeftOfAt , ExpectedCommaAfterPatternField ,
6
- GenericArgsInPatRequireTurbofishSyntax , InclusiveRangeExtraEquals , InclusiveRangeMatchArrow ,
7
- InclusiveRangeNoEnd , InvalidMutInPattern , PatternOnWrongSideOfAt , RefMutOrderIncorrect ,
8
- RemoveLet , RepeatedMutInPattern , SwitchRefBoxOrder , TopLevelOrPatternNotAllowed ,
9
- TopLevelOrPatternNotAllowedSugg , TrailingVertNotAllowed , UnexpectedLifetimeInPattern ,
10
- UnexpectedParenInRangePat , UnexpectedParenInRangePatSugg ,
11
- UnexpectedVertVertBeforeFunctionParam , UnexpectedVertVertInPattern ,
3
+ self , AmbiguousRangePattern , DotDotDotForRemainingFields , DotDotDotRangeToPatternNotAllowed ,
4
+ DotDotDotRestPattern , EnumPatternInsteadOfIdentifier , ExpectedBindingLeftOfAt ,
5
+ ExpectedCommaAfterPatternField , GenericArgsInPatRequireTurbofishSyntax ,
6
+ InclusiveRangeExtraEquals , InclusiveRangeMatchArrow , InclusiveRangeNoEnd , InvalidMutInPattern ,
7
+ PatternOnWrongSideOfAt , RefMutOrderIncorrect , RemoveLet , RepeatedMutInPattern ,
8
+ SwitchRefBoxOrder , TopLevelOrPatternNotAllowed , TopLevelOrPatternNotAllowedSugg ,
9
+ TrailingVertNotAllowed , UnexpectedLifetimeInPattern , UnexpectedParenInRangePat ,
10
+ UnexpectedParenInRangePatSugg , UnexpectedVertVertBeforeFunctionParam ,
11
+ UnexpectedVertVertInPattern ,
12
12
} ;
13
13
use crate :: { maybe_recover_from_interpolated_ty_qpath, maybe_whole} ;
14
14
use rustc_ast:: mut_visit:: { noop_visit_pat, MutVisitor } ;
@@ -19,7 +19,7 @@ use rustc_ast::{
19
19
PatField , PatFieldsRest , PatKind , Path , QSelf , RangeEnd , RangeSyntax ,
20
20
} ;
21
21
use rustc_ast_pretty:: pprust;
22
- use rustc_errors:: { Applicability , DiagnosticBuilder , MultiSpan , PResult } ;
22
+ use rustc_errors:: { Applicability , DiagnosticBuilder , PResult } ;
23
23
use rustc_session:: errors:: ExprParenthesesNeeded ;
24
24
use rustc_span:: source_map:: { respan, Spanned } ;
25
25
use rustc_span:: symbol:: { kw, sym, Ident } ;
@@ -604,7 +604,7 @@ impl<'a> Parser<'a> {
604
604
&& let Some ( form) = self . parse_range_end ( ) =>
605
605
{
606
606
self . dcx ( ) . emit_err ( UnexpectedParenInRangePat {
607
- span : MultiSpan :: from_spans ( vec ! [ open_paren, close_paren] ) ,
607
+ span : vec ! [ open_paren, close_paren] ,
608
608
sugg : UnexpectedParenInRangePatSugg {
609
609
start_span : open_paren,
610
610
end_span : close_paren,
@@ -754,11 +754,8 @@ impl<'a> Parser<'a> {
754
754
) -> PResult < ' a , PatKind > {
755
755
// recover from `(`
756
756
let open_paren = ( self . may_recover ( )
757
- && self . token . kind == token:: OpenDelim ( Delimiter :: Parenthesis ) )
758
- . then ( || {
759
- self . bump ( ) ;
760
- self . prev_token . span
761
- } ) ;
757
+ && self . eat_noexpect ( & token:: OpenDelim ( Delimiter :: Parenthesis ) ) )
758
+ . then_some ( self . prev_token . span ) ;
762
759
763
760
let end = if self . is_pat_range_end_start ( 0 ) {
764
761
// Parsing e.g. `X..=Y`.
@@ -772,13 +769,13 @@ impl<'a> Parser<'a> {
772
769
None
773
770
} ;
774
771
775
- if let Some ( span ) = open_paren {
772
+ if let Some ( open_paren ) = open_paren {
776
773
self . expect ( & token:: CloseDelim ( Delimiter :: Parenthesis ) ) ?;
777
774
778
775
self . dcx ( ) . emit_err ( UnexpectedParenInRangePat {
779
- span : MultiSpan :: from_spans ( vec ! [ span , self . prev_token. span] ) ,
776
+ span : vec ! [ open_paren , self . prev_token. span] ,
780
777
sugg : UnexpectedParenInRangePatSugg {
781
- start_span : span ,
778
+ start_span : open_paren ,
782
779
end_span : self . prev_token . span ,
783
780
} ,
784
781
} ) ;
@@ -825,25 +822,22 @@ impl<'a> Parser<'a> {
825
822
fn parse_pat_range_to ( & mut self , mut re : Spanned < RangeEnd > ) -> PResult < ' a , PatKind > {
826
823
// recover from `(`
827
824
let open_paren = ( self . may_recover ( )
828
- && self . token . kind == token:: OpenDelim ( Delimiter :: Parenthesis ) )
829
- . then ( || {
830
- self . bump ( ) ;
831
- self . prev_token . span
832
- } ) ;
825
+ && self . eat_noexpect ( & token:: OpenDelim ( Delimiter :: Parenthesis ) ) )
826
+ . then_some ( self . prev_token . span ) ;
833
827
834
828
let end = self . parse_pat_range_end ( ) ?;
835
829
if let RangeEnd :: Included ( syn @ RangeSyntax :: DotDotDot ) = & mut re. node {
836
830
* syn = RangeSyntax :: DotDotEq ;
837
831
self . dcx ( ) . emit_err ( DotDotDotRangeToPatternNotAllowed { span : re. span } ) ;
838
832
}
839
833
840
- if let Some ( span ) = open_paren {
834
+ if let Some ( open_paren ) = open_paren {
841
835
self . expect ( & token:: CloseDelim ( Delimiter :: Parenthesis ) ) ?;
842
836
843
837
self . dcx ( ) . emit_err ( UnexpectedParenInRangePat {
844
- span : MultiSpan :: from_spans ( vec ! [ span , self . prev_token. span] ) ,
838
+ span : vec ! [ open_paren , self . prev_token. span] ,
845
839
sugg : UnexpectedParenInRangePatSugg {
846
- start_span : span ,
840
+ start_span : open_paren ,
847
841
end_span : self . prev_token . span ,
848
842
} ,
849
843
} ) ;
@@ -1013,7 +1007,7 @@ impl<'a> Parser<'a> {
1013
1007
1014
1008
if self . isnt_pattern_start ( ) {
1015
1009
let descr = super :: token_descr ( & self . token ) ;
1016
- self . dcx ( ) . emit_err ( BoxNotPat {
1010
+ self . dcx ( ) . emit_err ( errors :: BoxNotPat {
1017
1011
span : self . token . span ,
1018
1012
kw : box_span,
1019
1013
lo : box_span. shrink_to_lo ( ) ,
0 commit comments