Migrate 'trivial cast' lint
This commit is contained in:
parent
82471e9f6c
commit
80a9699117
@ -145,6 +145,12 @@ hir_typeck_suggest_boxing_when_appropriate = store this in the heap by calling `
|
||||
|
||||
hir_typeck_suggest_ptr_null_mut = consider using `core::ptr::null_mut` instead
|
||||
|
||||
hir_typeck_trivial_cast = trivial {$numeric ->
|
||||
[true] numeric cast
|
||||
*[false] cast
|
||||
}: `{$expr_ty}` as `{$cast_ty}`
|
||||
.help = cast can be replaced by coercion; this might require a temporary variable
|
||||
|
||||
hir_typeck_union_pat_dotdot = `..` cannot be used in union patterns
|
||||
|
||||
hir_typeck_union_pat_multiple_fields = union patterns should have exactly one field
|
||||
|
@ -631,31 +631,18 @@ impl<'a, 'tcx> CastCheck<'tcx> {
|
||||
}
|
||||
|
||||
fn trivial_cast_lint(&self, fcx: &FnCtxt<'a, 'tcx>) {
|
||||
let t_cast = self.cast_ty;
|
||||
let t_expr = self.expr_ty;
|
||||
let (adjective, lint) = if t_cast.is_numeric() && t_expr.is_numeric() {
|
||||
("numeric ", lint::builtin::TRIVIAL_NUMERIC_CASTS)
|
||||
let (numeric, lint) = if self.cast_ty.is_numeric() && self.expr_ty.is_numeric() {
|
||||
(true, lint::builtin::TRIVIAL_NUMERIC_CASTS)
|
||||
} else {
|
||||
("", lint::builtin::TRIVIAL_CASTS)
|
||||
(false, lint::builtin::TRIVIAL_CASTS)
|
||||
};
|
||||
fcx.tcx.struct_span_lint_hir(
|
||||
let expr_ty = fcx.resolve_vars_if_possible(self.expr_ty);
|
||||
let cast_ty = fcx.resolve_vars_if_possible(self.cast_ty);
|
||||
fcx.tcx.emit_spanned_lint(
|
||||
lint,
|
||||
self.expr.hir_id,
|
||||
self.span,
|
||||
DelayDm(|| {
|
||||
format!(
|
||||
"trivial {}cast: `{}` as `{}`",
|
||||
adjective,
|
||||
fcx.ty_to_string(t_expr),
|
||||
fcx.ty_to_string(t_cast)
|
||||
)
|
||||
}),
|
||||
|lint| {
|
||||
lint.help(
|
||||
"cast can be replaced by coercion; this might \
|
||||
require a temporary variable",
|
||||
)
|
||||
},
|
||||
errors::TrivialCast { numeric, expr_ty, cast_ty },
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -533,6 +533,15 @@ pub struct SuggestPtrNullMut {
|
||||
pub span: Span,
|
||||
}
|
||||
|
||||
#[derive(LintDiagnostic)]
|
||||
#[diag(hir_typeck_trivial_cast)]
|
||||
#[help]
|
||||
pub struct TrivialCast<'tcx> {
|
||||
pub numeric: bool,
|
||||
pub expr_ty: Ty<'tcx>,
|
||||
pub cast_ty: Ty<'tcx>,
|
||||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(hir_typeck_no_associated_item, code = "E0599")]
|
||||
pub struct NoAssociatedItem {
|
||||
|
Loading…
x
Reference in New Issue
Block a user