Skip to content

Commit 01e96dc

Browse files
committed
typeck: extract suggest_fields_on_recordish
1 parent 039c789 commit 01e96dc

File tree

1 file changed

+27
-18
lines changed

1 file changed

+27
-18
lines changed

src/librustc_typeck/check/expr.rs

+27-18
Original file line numberDiff line numberDiff line change
@@ -1350,24 +1350,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
13501350

13511351
match expr_t.sty {
13521352
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);
13711354
}
13721355
ty::Array(_, len) => {
13731356
self.maybe_suggest_array_indexing(&mut err, expr, base, field, len);
@@ -1444,6 +1427,32 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
14441427
err.emit();
14451428
}
14461429

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+
14471456
fn maybe_suggest_array_indexing(
14481457
&self,
14491458
err: &mut DiagnosticBuilder<'_>,

0 commit comments

Comments
 (0)