File tree Expand file tree Collapse file tree
compiler/rustc_parse/src/parser Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -1278,10 +1278,14 @@ impl<'a> Parser<'a> {
12781278 None
12791279 } ;
12801280 let open_paren = self . token . span ;
1281+ let call_depth = self . token_cursor . stack . len ( ) ;
12811282
12821283 let seq = match self . parse_expr_paren_seq ( ) {
12831284 Ok ( args) => Ok ( self . mk_expr ( lo. to ( self . prev_token . span ) , self . mk_call ( fun, args) ) ) ,
1284- Err ( err) if self . is_expected_raw_ref_mut ( ) => {
1285+ Err ( err)
1286+ if self . is_expected_raw_ref_mut ( )
1287+ && self . token_cursor . stack . len ( ) == call_depth =>
1288+ {
12851289 let guar = err. emit ( ) ;
12861290 // Preserve the call expression so later passes can still diagnose the callee,
12871291 // while treating the malformed `&raw <expr>` argument as an error expression.
@@ -1299,9 +1303,8 @@ impl<'a> Parser<'a> {
12991303 fn recover_raw_ref_call_args ( & mut self , guar : ErrorGuaranteed ) -> ThinVec < Box < Expr > > {
13001304 let err_span = self . prev_token . span . to ( self . token . span ) ;
13011305 let mut args = thin_vec ! [ self . mk_expr_err( err_span, guar) ] ;
1302- while self . token != token:: Eof && self . token != token:: CloseParen {
1303- if self . eat ( exp ! ( Comma ) ) && self . token != token:: Eof && self . token != token:: CloseParen
1304- {
1306+ while !self . token . kind . is_close_delim_or_eof ( ) {
1307+ if self . eat ( exp ! ( Comma ) ) && !self . token . kind . is_close_delim_or_eof ( ) {
13051308 args. push ( self . mk_expr_err ( self . prev_token . span . shrink_to_hi ( ) , guar) ) ;
13061309 } else {
13071310 self . parse_token_tree ( ) ;
You can’t perform that action at this time.
0 commit comments