Skip to content

Commit 039c789

Browse files
committed
typeck: extract suggest_first_deref_field
1 parent 9805846 commit 039c789

File tree

1 file changed

+21
-11
lines changed

1 file changed

+21
-11
lines changed

src/librustc_typeck/check/expr.rs

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1373,17 +1373,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
13731373
self.maybe_suggest_array_indexing(&mut err, expr, base, field, len);
13741374
}
13751375
ty::RawPtr(..) => {
1376-
let base = self.tcx.sess.source_map()
1377-
.span_to_snippet(base.span)
1378-
.unwrap_or_else(|_| self.tcx.hir().hir_to_pretty_string(base.hir_id));
1379-
let msg = format!("`{}` is a raw pointer; try dereferencing it", base);
1380-
let suggestion = format!("(*{}).{}", base, field);
1381-
err.span_suggestion(
1382-
expr.span,
1383-
&msg,
1384-
suggestion,
1385-
Applicability::MaybeIncorrect,
1386-
);
1376+
self.suggest_first_deref_field(&mut err, expr, base, field);
13871377
}
13881378
_ => {}
13891379
}
@@ -1480,6 +1470,26 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
14801470
}
14811471
}
14821472

1473+
fn suggest_first_deref_field(
1474+
&self,
1475+
err: &mut DiagnosticBuilder<'_>,
1476+
expr: &hir::Expr,
1477+
base: &hir::Expr,
1478+
field: ast::Ident,
1479+
) {
1480+
let base = self.tcx.sess.source_map()
1481+
.span_to_snippet(base.span)
1482+
.unwrap_or_else(|_| self.tcx.hir().hir_to_pretty_string(base.hir_id));
1483+
let msg = format!("`{}` is a raw pointer; try dereferencing it", base);
1484+
let suggestion = format!("(*{}).{}", base, field);
1485+
err.span_suggestion(
1486+
expr.span,
1487+
&msg,
1488+
suggestion,
1489+
Applicability::MaybeIncorrect,
1490+
);
1491+
}
1492+
14831493
fn no_such_field_err<T: Display>(&self, span: Span, field: T, expr_t: &ty::TyS<'_>)
14841494
-> DiagnosticBuilder<'_> {
14851495
type_error_struct!(self.tcx().sess, span, expr_t, E0609,

0 commit comments

Comments
 (0)