@@ -1373,17 +1373,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
1373
1373
self . maybe_suggest_array_indexing ( & mut err, expr, base, field, len) ;
1374
1374
}
1375
1375
ty:: RawPtr ( ..) => {
1376
- let base = self . tcx . sess . source_map ( )
1377
- . span_to_snippet ( base. span )
1378
- . unwrap_or_else ( |_| self . tcx . hir ( ) . hir_to_pretty_string ( base. hir_id ) ) ;
1379
- let msg = format ! ( "`{}` is a raw pointer; try dereferencing it" , base) ;
1380
- let suggestion = format ! ( "(*{}).{}" , base, field) ;
1381
- err. span_suggestion (
1382
- expr. span ,
1383
- & msg,
1384
- suggestion,
1385
- Applicability :: MaybeIncorrect ,
1386
- ) ;
1376
+ self . suggest_first_deref_field ( & mut err, expr, base, field) ;
1387
1377
}
1388
1378
_ => { }
1389
1379
}
@@ -1480,6 +1470,26 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
1480
1470
}
1481
1471
}
1482
1472
1473
+ fn suggest_first_deref_field (
1474
+ & self ,
1475
+ err : & mut DiagnosticBuilder < ' _ > ,
1476
+ expr : & hir:: Expr ,
1477
+ base : & hir:: Expr ,
1478
+ field : ast:: Ident ,
1479
+ ) {
1480
+ let base = self . tcx . sess . source_map ( )
1481
+ . span_to_snippet ( base. span )
1482
+ . unwrap_or_else ( |_| self . tcx . hir ( ) . hir_to_pretty_string ( base. hir_id ) ) ;
1483
+ let msg = format ! ( "`{}` is a raw pointer; try dereferencing it" , base) ;
1484
+ let suggestion = format ! ( "(*{}).{}" , base, field) ;
1485
+ err. span_suggestion (
1486
+ expr. span ,
1487
+ & msg,
1488
+ suggestion,
1489
+ Applicability :: MaybeIncorrect ,
1490
+ ) ;
1491
+ }
1492
+
1483
1493
fn no_such_field_err < T : Display > ( & self , span : Span , field : T , expr_t : & ty:: TyS < ' _ > )
1484
1494
-> DiagnosticBuilder < ' _ > {
1485
1495
type_error_struct ! ( self . tcx( ) . sess, span, expr_t, E0609 ,
0 commit comments