about summary refs log tree commit diff
path: root/compiler/rustc_lint/src/enum_intrinsics_non_enums.rs
diff options
context:
space:
mode:
authorDavid Wood <david.wood@huawei.com>2022-06-27 14:08:02 +0100
committerDavid Wood <david.wood@huawei.com>2022-06-30 08:59:21 +0100
commit2a69640eb2a8086ed848808efaf79c99781a78e5 (patch)
treee990e95251a1b75cde6517798dba30f6e6586bac /compiler/rustc_lint/src/enum_intrinsics_non_enums.rs
parent0f4c4c5e1842f63ab869d75ea8c891078a64ca55 (diff)
downloadrust-2a69640eb2a8086ed848808efaf79c99781a78e5.tar.gz
rust-2a69640eb2a8086ed848808efaf79c99781a78e5.zip
lint: port enum intrinsics diagnostics
Signed-off-by: David Wood <david.wood@huawei.com>
Diffstat (limited to 'compiler/rustc_lint/src/enum_intrinsics_non_enums.rs')
-rw-r--r--compiler/rustc_lint/src/enum_intrinsics_non_enums.rs30
1 files changed, 7 insertions, 23 deletions
diff --git a/compiler/rustc_lint/src/enum_intrinsics_non_enums.rs b/compiler/rustc_lint/src/enum_intrinsics_non_enums.rs
index c5e15a88fdf..5d212768d0d 100644
--- a/compiler/rustc_lint/src/enum_intrinsics_non_enums.rs
+++ b/compiler/rustc_lint/src/enum_intrinsics_non_enums.rs
@@ -1,4 +1,5 @@
 use crate::{context::LintContext, LateContext, LateLintPass};
+use rustc_errors::fluent;
 use rustc_hir as hir;
 use rustc_middle::ty::{fold::TypeFoldable, Ty};
 use rustc_span::{symbol::sym, Span};
@@ -51,19 +52,9 @@ fn enforce_mem_discriminant(
     if is_non_enum(ty_param) {
         cx.struct_span_lint(ENUM_INTRINSICS_NON_ENUMS, expr_span, |builder| {
             builder
-                .build(
-                    "the return value of `mem::discriminant` is \
-                        unspecified when called with a non-enum type",
-                )
-                .span_note(
-                    args_span,
-                    &format!(
-                        "the argument to `discriminant` should be a \
-                            reference to an enum, but it was passed \
-                            a reference to a `{}`, which is not an enum.",
-                        ty_param,
-                    ),
-                )
+                .build(fluent::lint::enum_intrinsics_mem_discriminant)
+                .set_arg("ty_param", ty_param)
+                .span_note(args_span, fluent::lint::note)
                 .emit();
         });
     }
@@ -74,16 +65,9 @@ fn enforce_mem_variant_count(cx: &LateContext<'_>, func_expr: &hir::Expr<'_>, sp
     if is_non_enum(ty_param) {
         cx.struct_span_lint(ENUM_INTRINSICS_NON_ENUMS, span, |builder| {
             builder
-                .build(
-                    "the return value of `mem::variant_count` is \
-                        unspecified when called with a non-enum type",
-                )
-                .note(&format!(
-                    "the type parameter of `variant_count` should \
-                            be an enum, but it was instantiated with \
-                            the type `{}`, which is not an enum.",
-                    ty_param,
-                ))
+                .build(fluent::lint::enum_intrinsics_mem_variant)
+                .set_arg("ty_param", ty_param)
+                .note(fluent::lint::note)
                 .emit();
         });
     }