@@ -46,14 +46,14 @@ use std::ops::{Deref, DerefMut};
46
46
use thin_vec:: { thin_vec, ThinVec } ;
47
47
48
48
/// Creates a placeholder argument.
49
- pub ( super ) fn dummy_arg ( ident : Ident ) -> Param {
49
+ pub ( super ) fn dummy_arg ( ident : Ident , guar : ErrorGuaranteed ) -> Param {
50
50
let pat = P ( Pat {
51
51
id : ast:: DUMMY_NODE_ID ,
52
52
kind : PatKind :: Ident ( BindingAnnotation :: NONE , ident, None ) ,
53
53
span : ident. span ,
54
54
tokens : None ,
55
55
} ) ;
56
- let ty = Ty { kind : TyKind :: Err , span : ident. span , id : ast:: DUMMY_NODE_ID , tokens : None } ;
56
+ let ty = Ty { kind : TyKind :: Err ( guar ) , span : ident. span , id : ast:: DUMMY_NODE_ID , tokens : None } ;
57
57
Param {
58
58
attrs : AttrVec :: default ( ) ,
59
59
id : ast:: DUMMY_NODE_ID ,
@@ -1540,14 +1540,14 @@ impl<'a> Parser<'a> {
1540
1540
pub ( super ) fn maybe_recover_from_question_mark ( & mut self , ty : P < Ty > ) -> P < Ty > {
1541
1541
if self . token == token:: Question {
1542
1542
self . bump ( ) ;
1543
- self . dcx ( ) . emit_err ( QuestionMarkInType {
1543
+ let guar = self . dcx ( ) . emit_err ( QuestionMarkInType {
1544
1544
span : self . prev_token . span ,
1545
1545
sugg : QuestionMarkInTypeSugg {
1546
1546
left : ty. span . shrink_to_lo ( ) ,
1547
1547
right : self . prev_token . span ,
1548
1548
} ,
1549
1549
} ) ;
1550
- self . mk_ty ( ty. span . to ( self . prev_token . span ) , TyKind :: Err )
1550
+ self . mk_ty ( ty. span . to ( self . prev_token . span ) , TyKind :: Err ( guar ) )
1551
1551
} else {
1552
1552
ty
1553
1553
}
@@ -2304,8 +2304,8 @@ impl<'a> Parser<'a> {
2304
2304
2305
2305
pub ( super ) fn recover_bad_self_param ( & mut self , mut param : Param ) -> PResult < ' a , Param > {
2306
2306
let span = param. pat . span ;
2307
- param . ty . kind = TyKind :: Err ;
2308
- self . dcx ( ) . emit_err ( SelfParamNotFirst { span } ) ;
2307
+ let guar = self . dcx ( ) . emit_err ( SelfParamNotFirst { span } ) ;
2308
+ param . ty . kind = TyKind :: Err ( guar ) ;
2309
2309
Ok ( param)
2310
2310
}
2311
2311
@@ -2437,7 +2437,7 @@ impl<'a> Parser<'a> {
2437
2437
pub ( super ) fn deduplicate_recovered_params_names ( & self , fn_inputs : & mut ThinVec < Param > ) {
2438
2438
let mut seen_inputs = FxHashSet :: default ( ) ;
2439
2439
for input in fn_inputs. iter_mut ( ) {
2440
- let opt_ident = if let ( PatKind :: Ident ( _, ident, _) , TyKind :: Err ) =
2440
+ let opt_ident = if let ( PatKind :: Ident ( _, ident, _) , TyKind :: Err ( _ ) ) =
2441
2441
( & input. pat . kind , & input. ty . kind )
2442
2442
{
2443
2443
Some ( * ident)
@@ -2644,8 +2644,10 @@ impl<'a> Parser<'a> {
2644
2644
"::" ,
2645
2645
Applicability :: MaybeIncorrect ,
2646
2646
) ;
2647
- err. emit ( ) ;
2648
- return Ok ( GenericArg :: Type ( self . mk_ty ( start. to ( expr. span ) , TyKind :: Err ) ) ) ;
2647
+ let guar = err. emit ( ) ;
2648
+ return Ok ( GenericArg :: Type (
2649
+ self . mk_ty ( start. to ( expr. span ) , TyKind :: Err ( guar) ) ,
2650
+ ) ) ;
2649
2651
} else if token:: Comma == self . token . kind || self . token . kind . should_end_const_arg ( )
2650
2652
{
2651
2653
// Avoid the following output by checking that we consumed a full const arg:
0 commit comments