@@ -1266,45 +1266,36 @@ impl<'a> Parser<'a> {
1266
1266
Ok ( base)
1267
1267
} ;
1268
1268
1269
- let ExprKind :: Path ( _, path) = & base. kind
1270
- else { return help_base_case ( err, base) } ;
1271
- let [ segment] = path. segments . as_slice ( )
1272
- else { return help_base_case ( err, base) } ;
1273
- let ident = segment. ident ;
1274
-
1275
1269
// (pre, post)
1276
1270
let spans = match kind. fixity {
1277
- UnaryFixity :: Pre => ( op_span, ident . span . shrink_to_hi ( ) ) ,
1278
- UnaryFixity :: Post => ( ident . span . shrink_to_lo ( ) , op_span) ,
1271
+ UnaryFixity :: Pre => ( op_span, base . span . shrink_to_hi ( ) ) ,
1272
+ UnaryFixity :: Post => ( base . span . shrink_to_lo ( ) , op_span) ,
1279
1273
} ;
1280
1274
1281
- if ident. is_reserved ( ) {
1282
- return help_base_case ( err, base) ;
1283
- }
1284
-
1285
1275
if kind. standalone {
1286
- self . inc_dec_standalone_recovery ( base , err, kind, spans)
1276
+ self . inc_dec_standalone_recovery ( err, kind, spans)
1287
1277
} else {
1278
+ let Ok ( base_src) = self . span_to_snippet ( base. span )
1279
+ else { return help_base_case ( err, base) } ;
1288
1280
match kind. fixity {
1289
- UnaryFixity :: Pre => self . prefix_inc_dec_suggest ( base , err, kind, ident , spans) ,
1290
- UnaryFixity :: Post => self . postfix_inc_dec_suggest ( base , err, kind, ident , spans) ,
1281
+ UnaryFixity :: Pre => self . prefix_inc_dec_suggest ( base_src , err, kind, spans) ,
1282
+ UnaryFixity :: Post => self . postfix_inc_dec_suggest ( base_src , err, kind, spans) ,
1291
1283
}
1292
1284
}
1293
1285
}
1294
1286
1295
1287
fn prefix_inc_dec_suggest (
1296
1288
& mut self ,
1297
- _base : P < Expr > ,
1289
+ base_src : String ,
1298
1290
mut err : DiagnosticBuilder < ' a > ,
1299
1291
kind : IncDecRecovery ,
1300
- ident : Ident ,
1301
1292
( pre_span, post_span) : ( Span , Span ) ,
1302
1293
) -> PResult < ' a , P < Expr > > {
1303
1294
err. multipart_suggestion (
1304
1295
& format ! ( "use `{}= 1` instead" , kind. op. chr( ) ) ,
1305
1296
vec ! [
1306
1297
( pre_span, "{ " . to_string( ) ) ,
1307
- ( post_span, format!( " {}= 1; {} }}" , kind. op. chr( ) , ident ) ) ,
1298
+ ( post_span, format!( " {}= 1; {} }}" , kind. op. chr( ) , base_src ) ) ,
1308
1299
] ,
1309
1300
Applicability :: MachineApplicable ,
1310
1301
) ;
@@ -1313,17 +1304,16 @@ impl<'a> Parser<'a> {
1313
1304
1314
1305
fn postfix_inc_dec_suggest (
1315
1306
& mut self ,
1316
- _base : P < Expr > ,
1307
+ base_src : String ,
1317
1308
mut err : DiagnosticBuilder < ' a > ,
1318
1309
kind : IncDecRecovery ,
1319
- ident : Ident ,
1320
1310
( pre_span, post_span) : ( Span , Span ) ,
1321
1311
) -> PResult < ' a , P < Expr > > {
1322
1312
err. multipart_suggestion (
1323
1313
& format ! ( "use `{}= 1` instead" , kind. op. chr( ) ) ,
1324
1314
vec ! [
1325
1315
( pre_span, "{ let tmp = " . to_string( ) ) ,
1326
- ( post_span, format!( "; {} {}= 1; tmp }}" , ident , kind. op. chr( ) ) ) ,
1316
+ ( post_span, format!( "; {} {}= 1; tmp }}" , base_src , kind. op. chr( ) ) ) ,
1327
1317
] ,
1328
1318
Applicability :: MachineApplicable ,
1329
1319
) ;
@@ -1332,7 +1322,6 @@ impl<'a> Parser<'a> {
1332
1322
1333
1323
fn inc_dec_standalone_recovery (
1334
1324
& mut self ,
1335
- _base : P < Expr > ,
1336
1325
mut err : DiagnosticBuilder < ' a > ,
1337
1326
kind : IncDecRecovery ,
1338
1327
( pre_span, post_span) : ( Span , Span ) ,
0 commit comments