@@ -2921,29 +2921,34 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
29212921 . emit ( ) ;
29222922 self . tcx ( ) . types . err
29232923 } else {
2924- let mut err = type_error_struct ! ( self . tcx( ) . sess, field. span, expr_t, E0609 ,
2925- "no field `{}` on type `{}`" ,
2926- field. node, expr_t) ;
2927- match expr_t. sty {
2928- ty:: TyAdt ( def, _) if !def. is_enum ( ) => {
2929- if let Some ( suggested_field_name) =
2930- Self :: suggest_field_name ( def. struct_variant ( ) , field, vec ! [ ] ) {
2931- err. span_label ( field. span ,
2932- format ! ( "did you mean `{}`?" , suggested_field_name) ) ;
2933- } else {
2934- err. span_label ( field. span ,
2935- "unknown field" ) ;
2936- } ;
2937- }
2938- ty:: TyRawPtr ( ..) => {
2939- err. note ( & format ! ( "`{0}` is a native pointer; perhaps you need to deref with \
2940- `(*{0}).{1}`",
2941- self . tcx. hir. node_to_pretty_string( base. id) ,
2942- field. node) ) ;
2924+ if !expr_t. is_primitive_ty ( ) {
2925+ let mut err = type_error_struct ! ( self . tcx( ) . sess, field. span, expr_t, E0609 ,
2926+ "no field `{}` on type `{}`" ,
2927+ field. node, expr_t) ;
2928+ match expr_t. sty {
2929+ ty:: TyAdt ( def, _) if !def. is_enum ( ) => {
2930+ if let Some ( suggested_field_name) =
2931+ Self :: suggest_field_name ( def. struct_variant ( ) , field, vec ! [ ] ) {
2932+ err. span_label ( field. span ,
2933+ format ! ( "did you mean `{}`?" , suggested_field_name) ) ;
2934+ } else {
2935+ err. span_label ( field. span , "unknown field" ) ;
2936+ } ;
2937+ }
2938+ ty:: TyRawPtr ( ..) => {
2939+ err. note ( & format ! ( "`{0}` is a native pointer; perhaps you need to deref \
2940+ with `(*{0}).{1}`",
2941+ self . tcx. hir. node_to_pretty_string( base. id) ,
2942+ field. node) ) ;
2943+ }
2944+ _ => { }
29432945 }
2944- _ => { }
2945- }
2946- err. emit ( ) ;
2946+ err
2947+ } else {
2948+ type_error_struct ! ( self . tcx( ) . sess, field. span, expr_t, E0610 ,
2949+ "`{}` is a primitive type and therefore doesn't have fields" ,
2950+ expr_t)
2951+ } . emit ( ) ;
29472952 self . tcx ( ) . types . err
29482953 }
29492954 }
0 commit comments