diff options
| author | Mazdak Farrokhzad <twingoow@gmail.com> | 2019-08-14 00:31:08 +0200 |
|---|---|---|
| committer | Mazdak Farrokhzad <twingoow@gmail.com> | 2019-08-14 00:31:08 +0200 |
| commit | 039c78932564c38c79f08745ab6e02bceb1eb468 (patch) | |
| tree | 7064edafef5684378508ba14bfcb6b097d849b88 | |
| parent | 98058468815a62be36875ed0e990bbcbcd4a42b4 (diff) | |
| download | rust-039c78932564c38c79f08745ab6e02bceb1eb468.tar.gz rust-039c78932564c38c79f08745ab6e02bceb1eb468.zip | |
typeck: extract suggest_first_deref_field
| -rw-r--r-- | src/librustc_typeck/check/expr.rs | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/src/librustc_typeck/check/expr.rs b/src/librustc_typeck/check/expr.rs index 20a47441375..2b696613c8b 100644 --- a/src/librustc_typeck/check/expr.rs +++ b/src/librustc_typeck/check/expr.rs @@ -1373,17 +1373,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { self.maybe_suggest_array_indexing(&mut err, expr, base, field, len); } ty::RawPtr(..) => { - let base = self.tcx.sess.source_map() - .span_to_snippet(base.span) - .unwrap_or_else(|_| self.tcx.hir().hir_to_pretty_string(base.hir_id)); - let msg = format!("`{}` is a raw pointer; try dereferencing it", base); - let suggestion = format!("(*{}).{}", base, field); - err.span_suggestion( - expr.span, - &msg, - suggestion, - Applicability::MaybeIncorrect, - ); + self.suggest_first_deref_field(&mut err, expr, base, field); } _ => {} } @@ -1480,6 +1470,26 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { } } + fn suggest_first_deref_field( + &self, + err: &mut DiagnosticBuilder<'_>, + expr: &hir::Expr, + base: &hir::Expr, + field: ast::Ident, + ) { + let base = self.tcx.sess.source_map() + .span_to_snippet(base.span) + .unwrap_or_else(|_| self.tcx.hir().hir_to_pretty_string(base.hir_id)); + let msg = format!("`{}` is a raw pointer; try dereferencing it", base); + let suggestion = format!("(*{}).{}", base, field); + err.span_suggestion( + expr.span, + &msg, + suggestion, + Applicability::MaybeIncorrect, + ); + } + fn no_such_field_err<T: Display>(&self, span: Span, field: T, expr_t: &ty::TyS<'_>) -> DiagnosticBuilder<'_> { type_error_struct!(self.tcx().sess, span, expr_t, E0609, |
