@@ -3278,6 +3278,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
3278
3278
}
3279
3279
3280
3280
fn suggest_first_deref_field( & self , err : & mut Diag < ' _ > , base : & hir:: Expr < ' _ > , field : Ident ) {
3281
+ <<<<<<< HEAD
3281
3282
err. span_label( field . span, "unknown field" ) ;
3282
3283
let val = if let Ok ( base) = self . tcx. sess. source_map( ) . span_to_snippet( base. span)
3283
3284
&& base. len( ) < 20
@@ -3293,6 +3294,26 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
3293
3294
( base. span. to( field. span. shrink_to_lo( ) ) , format!( "{val})." ) ) ,
3294
3295
] ,
3295
3296
Applicability :: MaybeIncorrect ,
3297
+ =======
3298
+ let full_span = base. span. to( field. span) ;
3299
+
3300
+ let base_snippet = self
3301
+ . tcx
3302
+ . sess
3303
+ . source_map( )
3304
+ . span_to_snippet( base. span)
3305
+ . unwrap_or_else( |_| "ptr" . to_string( ) ) ;
3306
+
3307
+ let replacement = format ! ( "(*{}).{}" , base_snippet, field. name) ;
3308
+
3309
+ err. span_label( full_span, "unknown field access via raw pointer" ) ;
3310
+
3311
+ err. span_suggestion_verbose(
3312
+ full_span,
3313
+ "`->` is not valid in Rust; use `.` on a dereferenced raw pointer instead" ,
3314
+ replacement,
3315
+ Applicability :: MachineApplicable ,
3316
+ >>>>>>> cf551dbca4b ( improve diagnostic for raw pointer field access with ->)
3296
3317
) ;
3297
3318
}
3298
3319
0 commit comments