@@ -1373,17 +1373,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
13731373 self . maybe_suggest_array_indexing ( & mut err, expr, base, field, len) ;
13741374 }
13751375 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) ;
13871377 }
13881378 _ => { }
13891379 }
@@ -1480,6 +1470,26 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
14801470 }
14811471 }
14821472
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+
14831493 fn no_such_field_err < T : Display > ( & self , span : Span , field : T , expr_t : & ty:: TyS < ' _ > )
14841494 -> DiagnosticBuilder < ' _ > {
14851495 type_error_struct ! ( self . tcx( ) . sess, span, expr_t, E0609 ,
0 commit comments