@@ -1338,36 +1338,42 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
13381338
13391339 if let Some ( ( did, field_ty) ) = private_candidate {
13401340 self . ban_private_field_access ( expr, expr_t, field, did) ;
1341- field_ty
1342- } else if field. name == kw:: Invalid {
1343- self . tcx ( ) . types . err
1341+ return field_ty;
1342+ }
1343+
1344+ if field. name == kw:: Invalid {
13441345 } else if self . method_exists ( field, expr_t, expr. hir_id , true ) {
13451346 self . ban_take_value_of_method ( expr, expr_t, field) ;
1346- self . tcx ( ) . types . err
1347- } else {
1348- if !expr_t. is_primitive_ty ( ) {
1349- let mut err = self . no_such_field_err ( field. span , field, expr_t) ;
1347+ } else if !expr_t. is_primitive_ty ( ) {
1348+ let mut err = self . no_such_field_err ( field. span , field, expr_t) ;
13501349
1351- match expr_t. sty {
1352- ty:: Adt ( def, _) if !def. is_enum ( ) => {
1353- self . suggest_fields_on_recordish ( & mut err, def, field) ;
1354- }
1355- ty:: Array ( _, len) => {
1356- self . maybe_suggest_array_indexing ( & mut err, expr, base, field, len) ;
1357- }
1358- ty:: RawPtr ( ..) => {
1359- self . suggest_first_deref_field ( & mut err, expr, base, field) ;
1360- }
1361- _ => { }
1350+ match expr_t. sty {
1351+ ty:: Adt ( def, _) if !def. is_enum ( ) => {
1352+ self . suggest_fields_on_recordish ( & mut err, def, field) ;
13621353 }
1363- err
1364- } else {
1365- type_error_struct ! ( self . tcx( ) . sess, field. span, expr_t, E0610 ,
1366- "`{}` is a primitive type and therefore doesn't have fields" ,
1367- expr_t)
1368- } . emit ( ) ;
1369- self . tcx ( ) . types . err
1354+ ty:: Array ( _, len) => {
1355+ self . maybe_suggest_array_indexing ( & mut err, expr, base, field, len) ;
1356+ }
1357+ ty:: RawPtr ( ..) => {
1358+ self . suggest_first_deref_field ( & mut err, expr, base, field) ;
1359+ }
1360+ _ => { }
1361+ }
1362+
1363+ err. emit ( ) ;
1364+ } else {
1365+ type_error_struct ! (
1366+ self . tcx( ) . sess,
1367+ field. span,
1368+ expr_t,
1369+ E0610 ,
1370+ "`{}` is a primitive type and therefore doesn't have fields" ,
1371+ expr_t
1372+ )
1373+ . emit ( ) ;
13701374 }
1375+
1376+ self . tcx ( ) . types . err
13711377 }
13721378
13731379 fn ban_private_field_access (
0 commit comments