@@ -1350,24 +1350,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
1350
1350
1351
1351
match expr_t. sty {
1352
1352
ty:: Adt ( def, _) if !def. is_enum ( ) => {
1353
- if let Some ( suggested_field_name) =
1354
- Self :: suggest_field_name ( def. non_enum_variant ( ) ,
1355
- & field. as_str ( ) , vec ! [ ] ) {
1356
- err. span_suggestion (
1357
- field. span ,
1358
- "a field with a similar name exists" ,
1359
- suggested_field_name. to_string ( ) ,
1360
- Applicability :: MaybeIncorrect ,
1361
- ) ;
1362
- } else {
1363
- err. span_label ( field. span , "unknown field" ) ;
1364
- let struct_variant_def = def. non_enum_variant ( ) ;
1365
- let field_names = self . available_field_names ( struct_variant_def) ;
1366
- if !field_names. is_empty ( ) {
1367
- err. note ( & format ! ( "available fields are: {}" ,
1368
- self . name_series_display( field_names) ) ) ;
1369
- }
1370
- } ;
1353
+ self . suggest_fields_on_recordish ( & mut err, def, field) ;
1371
1354
}
1372
1355
ty:: Array ( _, len) => {
1373
1356
self . maybe_suggest_array_indexing ( & mut err, expr, base, field, len) ;
@@ -1444,6 +1427,32 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
1444
1427
err. emit ( ) ;
1445
1428
}
1446
1429
1430
+ fn suggest_fields_on_recordish (
1431
+ & self ,
1432
+ err : & mut DiagnosticBuilder < ' _ > ,
1433
+ def : & ' tcx ty:: AdtDef ,
1434
+ field : ast:: Ident ,
1435
+ ) {
1436
+ if let Some ( suggested_field_name) =
1437
+ Self :: suggest_field_name ( def. non_enum_variant ( ) , & field. as_str ( ) , vec ! [ ] )
1438
+ {
1439
+ err. span_suggestion (
1440
+ field. span ,
1441
+ "a field with a similar name exists" ,
1442
+ suggested_field_name. to_string ( ) ,
1443
+ Applicability :: MaybeIncorrect ,
1444
+ ) ;
1445
+ } else {
1446
+ err. span_label ( field. span , "unknown field" ) ;
1447
+ let struct_variant_def = def. non_enum_variant ( ) ;
1448
+ let field_names = self . available_field_names ( struct_variant_def) ;
1449
+ if !field_names. is_empty ( ) {
1450
+ err. note ( & format ! ( "available fields are: {}" ,
1451
+ self . name_series_display( field_names) ) ) ;
1452
+ }
1453
+ }
1454
+ }
1455
+
1447
1456
fn maybe_suggest_array_indexing (
1448
1457
& self ,
1449
1458
err : & mut DiagnosticBuilder < ' _ > ,
0 commit comments