about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--clippy_lints/src/approx_const.rs4
-rw-r--r--clippy_lints/src/arithmetic.rs4
-rw-r--r--clippy_lints/src/assertions_on_constants.rs4
-rw-r--r--clippy_lints/src/assign_ops.rs4
-rw-r--r--clippy_lints/src/attrs.rs8
-rw-r--r--clippy_lints/src/bit_mask.rs3
-rw-r--r--clippy_lints/src/blacklisted_name.rs3
-rw-r--r--clippy_lints/src/block_in_if_condition.rs4
-rw-r--r--clippy_lints/src/booleans.rs4
-rw-r--r--clippy_lints/src/bytecount.rs4
-rw-r--r--clippy_lints/src/cargo_common_metadata.rs4
-rw-r--r--clippy_lints/src/collapsible_if.rs4
-rw-r--r--clippy_lints/src/const_static_lifetime.rs4
-rw-r--r--clippy_lints/src/copies.rs4
-rw-r--r--clippy_lints/src/copy_iterator.rs4
-rw-r--r--clippy_lints/src/cyclomatic_complexity.rs4
-rw-r--r--clippy_lints/src/default_trait_access.rs4
-rw-r--r--clippy_lints/src/derive.rs4
-rw-r--r--clippy_lints/src/doc.rs4
-rw-r--r--clippy_lints/src/double_comparison.rs4
-rw-r--r--clippy_lints/src/double_parens.rs4
-rw-r--r--clippy_lints/src/drop_forget_ref.rs4
-rw-r--r--clippy_lints/src/duration_subsec.rs4
-rw-r--r--clippy_lints/src/else_if_without_else.rs4
-rw-r--r--clippy_lints/src/empty_enum.rs4
-rw-r--r--clippy_lints/src/entry.rs4
-rw-r--r--clippy_lints/src/enum_clike.rs4
-rw-r--r--clippy_lints/src/enum_glob_use.rs4
-rw-r--r--clippy_lints/src/enum_variants.rs4
-rw-r--r--clippy_lints/src/eq_op.rs4
-rw-r--r--clippy_lints/src/erasing_op.rs4
-rw-r--r--clippy_lints/src/escape.rs4
-rw-r--r--clippy_lints/src/eta_reduction.rs4
-rw-r--r--clippy_lints/src/eval_order_dependence.rs4
-rw-r--r--clippy_lints/src/excessive_precision.rs4
-rw-r--r--clippy_lints/src/explicit_write.rs4
-rw-r--r--clippy_lints/src/fallible_impl_from.rs4
-rw-r--r--clippy_lints/src/format.rs4
-rw-r--r--clippy_lints/src/formatting.rs4
-rw-r--r--clippy_lints/src/functions.rs4
-rw-r--r--clippy_lints/src/identity_conversion.rs4
-rw-r--r--clippy_lints/src/identity_op.rs4
-rw-r--r--clippy_lints/src/if_not_else.rs4
-rw-r--r--clippy_lints/src/implicit_return.rs4
-rw-r--r--clippy_lints/src/indexing_slicing.rs4
-rw-r--r--clippy_lints/src/infallible_destructuring_match.rs4
-rw-r--r--clippy_lints/src/infinite_iter.rs4
-rw-r--r--clippy_lints/src/inherent_impl.rs4
-rw-r--r--clippy_lints/src/inline_fn_without_body.rs4
-rw-r--r--clippy_lints/src/int_plus_one.rs4
-rw-r--r--clippy_lints/src/invalid_ref.rs4
-rw-r--r--clippy_lints/src/items_after_statements.rs4
-rw-r--r--clippy_lints/src/large_enum_variant.rs4
-rw-r--r--clippy_lints/src/len_zero.rs4
-rw-r--r--clippy_lints/src/let_if_seq.rs4
-rw-r--r--clippy_lints/src/lib.rs13
-rw-r--r--clippy_lints/src/lifetimes.rs4
-rw-r--r--clippy_lints/src/literal_representation.rs8
-rw-r--r--clippy_lints/src/loops.rs4
-rw-r--r--clippy_lints/src/map_clone.rs4
-rw-r--r--clippy_lints/src/map_unit_fn.rs4
-rw-r--r--clippy_lints/src/matches.rs4
-rw-r--r--clippy_lints/src/mem_discriminant.rs4
-rw-r--r--clippy_lints/src/mem_forget.rs4
-rw-r--r--clippy_lints/src/mem_replace.rs4
-rw-r--r--clippy_lints/src/methods/mod.rs4
-rw-r--r--clippy_lints/src/minmax.rs4
-rw-r--r--clippy_lints/src/misc.rs4
-rw-r--r--clippy_lints/src/misc_early.rs4
-rw-r--r--clippy_lints/src/missing_doc.rs4
-rw-r--r--clippy_lints/src/missing_inline.rs4
-rw-r--r--clippy_lints/src/multiple_crate_versions.rs4
-rw-r--r--clippy_lints/src/mut_mut.rs4
-rw-r--r--clippy_lints/src/mut_reference.rs4
-rw-r--r--clippy_lints/src/mutex_atomic.rs4
-rw-r--r--clippy_lints/src/needless_bool.rs8
-rw-r--r--clippy_lints/src/needless_borrow.rs4
-rw-r--r--clippy_lints/src/needless_borrowed_ref.rs4
-rw-r--r--clippy_lints/src/needless_continue.rs4
-rw-r--r--clippy_lints/src/needless_pass_by_value.rs4
-rw-r--r--clippy_lints/src/needless_update.rs4
-rw-r--r--clippy_lints/src/neg_cmp_op_on_partial_ord.rs4
-rw-r--r--clippy_lints/src/neg_multiply.rs4
-rw-r--r--clippy_lints/src/new_without_default.rs4
-rw-r--r--clippy_lints/src/no_effect.rs4
-rw-r--r--clippy_lints/src/non_copy_const.rs4
-rw-r--r--clippy_lints/src/non_expressive_names.rs4
-rw-r--r--clippy_lints/src/ok_if_let.rs4
-rw-r--r--clippy_lints/src/open_options.rs4
-rw-r--r--clippy_lints/src/overflow_check_conditional.rs4
-rw-r--r--clippy_lints/src/panic_unimplemented.rs4
-rw-r--r--clippy_lints/src/partialeq_ne_impl.rs4
-rw-r--r--clippy_lints/src/precedence.rs4
-rw-r--r--clippy_lints/src/ptr.rs4
-rw-r--r--clippy_lints/src/ptr_offset_with_cast.rs4
-rw-r--r--clippy_lints/src/question_mark.rs4
-rw-r--r--clippy_lints/src/ranges.rs4
-rw-r--r--clippy_lints/src/redundant_clone.rs4
-rw-r--r--clippy_lints/src/redundant_field_names.rs4
-rw-r--r--clippy_lints/src/redundant_pattern_matching.rs4
-rw-r--r--clippy_lints/src/reference.rs8
-rw-r--r--clippy_lints/src/regex.rs4
-rw-r--r--clippy_lints/src/replace_consts.rs4
-rw-r--r--clippy_lints/src/returns.rs4
-rw-r--r--clippy_lints/src/serde_api.rs4
-rw-r--r--clippy_lints/src/shadow.rs4
-rw-r--r--clippy_lints/src/slow_vector_initialization.rs4
-rw-r--r--clippy_lints/src/strings.rs8
-rw-r--r--clippy_lints/src/suspicious_trait_impl.rs4
-rw-r--r--clippy_lints/src/swap.rs4
-rw-r--r--clippy_lints/src/temporary_assignment.rs4
-rw-r--r--clippy_lints/src/transmute.rs4
-rw-r--r--clippy_lints/src/trivially_copy_pass_by_ref.rs4
-rw-r--r--clippy_lints/src/types.rs44
-rw-r--r--clippy_lints/src/unicode.rs4
-rw-r--r--clippy_lints/src/unsafe_removed_from_name.rs4
-rw-r--r--clippy_lints/src/unused_io_amount.rs4
-rw-r--r--clippy_lints/src/unused_label.rs4
-rw-r--r--clippy_lints/src/unwrap.rs4
-rw-r--r--clippy_lints/src/use_self.rs4
-rw-r--r--clippy_lints/src/utils/author.rs4
-rw-r--r--clippy_lints/src/utils/inspector.rs4
-rw-r--r--clippy_lints/src/utils/internal_lints.rs15
-rw-r--r--clippy_lints/src/vec.rs4
-rw-r--r--clippy_lints/src/wildcard_dependencies.rs4
-rw-r--r--clippy_lints/src/write.rs4
-rw-r--r--clippy_lints/src/zero_div_zero.rs4
-rw-r--r--src/driver.rs2
-rw-r--r--tests/ui/lint_without_lint_pass.rs4
129 files changed, 588 insertions, 4 deletions
diff --git a/clippy_lints/src/approx_const.rs b/clippy_lints/src/approx_const.rs
index 8410408312f..337139e1b1d 100644
--- a/clippy_lints/src/approx_const.rs
+++ b/clippy_lints/src/approx_const.rs
@@ -60,6 +60,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(APPROX_CONSTANT)
     }
+
+    fn name(&self) -> &'static str {
+        "ApproxConstant"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
diff --git a/clippy_lints/src/arithmetic.rs b/clippy_lints/src/arithmetic.rs
index efa53ff94c3..e14c79374ba 100644
--- a/clippy_lints/src/arithmetic.rs
+++ b/clippy_lints/src/arithmetic.rs
@@ -52,6 +52,10 @@ impl LintPass for Arithmetic {
     fn get_lints(&self) -> LintArray {
         lint_array!(INTEGER_ARITHMETIC, FLOAT_ARITHMETIC)
     }
+
+    fn name(&self) -> &'static str {
+        "Arithmetic"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Arithmetic {
diff --git a/clippy_lints/src/assertions_on_constants.rs b/clippy_lints/src/assertions_on_constants.rs
index a148cb1c3a6..d420de3a4db 100644
--- a/clippy_lints/src/assertions_on_constants.rs
+++ b/clippy_lints/src/assertions_on_constants.rs
@@ -34,6 +34,10 @@ impl LintPass for AssertionsOnConstants {
     fn get_lints(&self) -> LintArray {
         lint_array![ASSERTIONS_ON_CONSTANTS]
     }
+
+    fn name(&self) -> &'static str {
+        "AssertionsOnConstants"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for AssertionsOnConstants {
diff --git a/clippy_lints/src/assign_ops.rs b/clippy_lints/src/assign_ops.rs
index ad77ee3a3fa..329bab5cf1c 100644
--- a/clippy_lints/src/assign_ops.rs
+++ b/clippy_lints/src/assign_ops.rs
@@ -57,6 +57,10 @@ impl LintPass for AssignOps {
     fn get_lints(&self) -> LintArray {
         lint_array!(ASSIGN_OP_PATTERN, MISREFACTORED_ASSIGN_OP)
     }
+
+    fn name(&self) -> &'static str {
+        "AssignOps"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for AssignOps {
diff --git a/clippy_lints/src/attrs.rs b/clippy_lints/src/attrs.rs
index 9e4dd52c414..4a5eb378d5a 100644
--- a/clippy_lints/src/attrs.rs
+++ b/clippy_lints/src/attrs.rs
@@ -199,6 +199,10 @@ impl LintPass for AttrPass {
             UNKNOWN_CLIPPY_LINTS,
         )
     }
+
+    fn name(&self) -> &'static str {
+        "Attributes"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for AttrPass {
@@ -500,6 +504,10 @@ impl LintPass for CfgAttrPass {
     fn get_lints(&self) -> LintArray {
         lint_array!(DEPRECATED_CFG_ATTR,)
     }
+
+    fn name(&self) -> &'static str {
+        "DeprecatedCfgAttribute"
+    }
 }
 
 impl EarlyLintPass for CfgAttrPass {
diff --git a/clippy_lints/src/bit_mask.rs b/clippy_lints/src/bit_mask.rs
index b08d9961d25..ef0943875d2 100644
--- a/clippy_lints/src/bit_mask.rs
+++ b/clippy_lints/src/bit_mask.rs
@@ -108,6 +108,9 @@ impl LintPass for BitMask {
     fn get_lints(&self) -> LintArray {
         lint_array!(BAD_BIT_MASK, INEFFECTIVE_BIT_MASK, VERBOSE_BIT_MASK)
     }
+    fn name(&self) -> &'static str {
+        "BitMask"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for BitMask {
diff --git a/clippy_lints/src/blacklisted_name.rs b/clippy_lints/src/blacklisted_name.rs
index 64b3be8f302..9606b2eda32 100644
--- a/clippy_lints/src/blacklisted_name.rs
+++ b/clippy_lints/src/blacklisted_name.rs
@@ -37,6 +37,9 @@ impl LintPass for BlackListedName {
     fn get_lints(&self) -> LintArray {
         lint_array!(BLACKLISTED_NAME)
     }
+    fn name(&self) -> &'static str {
+        "BlacklistedName"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for BlackListedName {
diff --git a/clippy_lints/src/block_in_if_condition.rs b/clippy_lints/src/block_in_if_condition.rs
index 6e850931e6b..8abcfb4cfd6 100644
--- a/clippy_lints/src/block_in_if_condition.rs
+++ b/clippy_lints/src/block_in_if_condition.rs
@@ -49,6 +49,10 @@ impl LintPass for BlockInIfCondition {
     fn get_lints(&self) -> LintArray {
         lint_array!(BLOCK_IN_IF_CONDITION_EXPR, BLOCK_IN_IF_CONDITION_STMT)
     }
+
+    fn name(&self) -> &'static str {
+        "BlockInIfCondition"
+    }
 }
 
 struct ExVisitor<'a, 'tcx: 'a> {
diff --git a/clippy_lints/src/booleans.rs b/clippy_lints/src/booleans.rs
index 8b1a56e3b6e..6b53dd908de 100644
--- a/clippy_lints/src/booleans.rs
+++ b/clippy_lints/src/booleans.rs
@@ -58,6 +58,10 @@ impl LintPass for NonminimalBool {
     fn get_lints(&self) -> LintArray {
         lint_array!(NONMINIMAL_BOOL, LOGIC_BUG)
     }
+
+    fn name(&self) -> &'static str {
+        "NonminimalBool"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for NonminimalBool {
diff --git a/clippy_lints/src/bytecount.rs b/clippy_lints/src/bytecount.rs
index 794b43f4db5..b677ef71583 100644
--- a/clippy_lints/src/bytecount.rs
+++ b/clippy_lints/src/bytecount.rs
@@ -38,6 +38,10 @@ impl LintPass for ByteCount {
     fn get_lints(&self) -> LintArray {
         lint_array!(NAIVE_BYTECOUNT)
     }
+
+    fn name(&self) -> &'static str {
+        "ByteCount"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for ByteCount {
diff --git a/clippy_lints/src/cargo_common_metadata.rs b/clippy_lints/src/cargo_common_metadata.rs
index c60d10cd009..124b11cc78c 100644
--- a/clippy_lints/src/cargo_common_metadata.rs
+++ b/clippy_lints/src/cargo_common_metadata.rs
@@ -62,6 +62,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(CARGO_COMMON_METADATA)
     }
+
+    fn name(&self) -> &'static str {
+        "CargoCommonMetadata"
+    }
 }
 
 impl EarlyLintPass for Pass {
diff --git a/clippy_lints/src/collapsible_if.rs b/clippy_lints/src/collapsible_if.rs
index 10cbc9e6ccd..c236706f02f 100644
--- a/clippy_lints/src/collapsible_if.rs
+++ b/clippy_lints/src/collapsible_if.rs
@@ -78,6 +78,10 @@ impl LintPass for CollapsibleIf {
     fn get_lints(&self) -> LintArray {
         lint_array!(COLLAPSIBLE_IF)
     }
+
+    fn name(&self) -> &'static str {
+        "CollapsibleIf"
+    }
 }
 
 impl EarlyLintPass for CollapsibleIf {
diff --git a/clippy_lints/src/const_static_lifetime.rs b/clippy_lints/src/const_static_lifetime.rs
index 229a411ce06..7315184c8bd 100644
--- a/clippy_lints/src/const_static_lifetime.rs
+++ b/clippy_lints/src/const_static_lifetime.rs
@@ -32,6 +32,10 @@ impl LintPass for StaticConst {
     fn get_lints(&self) -> LintArray {
         lint_array!(CONST_STATIC_LIFETIME)
     }
+
+    fn name(&self) -> &'static str {
+        "StaticConst"
+    }
 }
 
 impl StaticConst {
diff --git a/clippy_lints/src/copies.rs b/clippy_lints/src/copies.rs
index 3676519adc1..6bb75cf8064 100644
--- a/clippy_lints/src/copies.rs
+++ b/clippy_lints/src/copies.rs
@@ -110,6 +110,10 @@ impl LintPass for CopyAndPaste {
     fn get_lints(&self) -> LintArray {
         lint_array![IFS_SAME_COND, IF_SAME_THEN_ELSE, MATCH_SAME_ARMS]
     }
+
+    fn name(&self) -> &'static str {
+        "CopyAndPaste"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for CopyAndPaste {
diff --git a/clippy_lints/src/copy_iterator.rs b/clippy_lints/src/copy_iterator.rs
index 3d0df7424f1..59eef9e39dc 100644
--- a/clippy_lints/src/copy_iterator.rs
+++ b/clippy_lints/src/copy_iterator.rs
@@ -35,6 +35,10 @@ impl LintPass for CopyIterator {
     fn get_lints(&self) -> LintArray {
         lint_array![COPY_ITERATOR]
     }
+
+    fn name(&self) -> &'static str {
+        "CopyIterator"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for CopyIterator {
diff --git a/clippy_lints/src/cyclomatic_complexity.rs b/clippy_lints/src/cyclomatic_complexity.rs
index 9170f1e8ecf..c6358aed4bd 100644
--- a/clippy_lints/src/cyclomatic_complexity.rs
+++ b/clippy_lints/src/cyclomatic_complexity.rs
@@ -42,6 +42,10 @@ impl LintPass for CyclomaticComplexity {
     fn get_lints(&self) -> LintArray {
         lint_array!(CYCLOMATIC_COMPLEXITY)
     }
+
+    fn name(&self) -> &'static str {
+        "CyclomaticComplexity"
+    }
 }
 
 impl CyclomaticComplexity {
diff --git a/clippy_lints/src/default_trait_access.rs b/clippy_lints/src/default_trait_access.rs
index c4b39dc0f0a..7b3899b2f49 100644
--- a/clippy_lints/src/default_trait_access.rs
+++ b/clippy_lints/src/default_trait_access.rs
@@ -35,6 +35,10 @@ impl LintPass for DefaultTraitAccess {
     fn get_lints(&self) -> LintArray {
         lint_array!(DEFAULT_TRAIT_ACCESS)
     }
+
+    fn name(&self) -> &'static str {
+        "DefaultTraitAccess"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for DefaultTraitAccess {
diff --git a/clippy_lints/src/derive.rs b/clippy_lints/src/derive.rs
index a2bf0098ab8..9580fbbe4c1 100644
--- a/clippy_lints/src/derive.rs
+++ b/clippy_lints/src/derive.rs
@@ -68,6 +68,10 @@ impl LintPass for Derive {
     fn get_lints(&self) -> LintArray {
         lint_array!(EXPL_IMPL_CLONE_ON_COPY, DERIVE_HASH_XOR_EQ)
     }
+
+    fn name(&self) -> &'static str {
+        "Derive"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Derive {
diff --git a/clippy_lints/src/doc.rs b/clippy_lints/src/doc.rs
index e96ef9ac621..87135fb88b6 100644
--- a/clippy_lints/src/doc.rs
+++ b/clippy_lints/src/doc.rs
@@ -48,6 +48,10 @@ impl LintPass for Doc {
     fn get_lints(&self) -> LintArray {
         lint_array![DOC_MARKDOWN]
     }
+
+    fn name(&self) -> &'static str {
+        "DocMarkdown"
+    }
 }
 
 impl EarlyLintPass for Doc {
diff --git a/clippy_lints/src/double_comparison.rs b/clippy_lints/src/double_comparison.rs
index fc4af438d44..6c6b53b0b98 100644
--- a/clippy_lints/src/double_comparison.rs
+++ b/clippy_lints/src/double_comparison.rs
@@ -37,6 +37,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(DOUBLE_COMPARISONS)
     }
+
+    fn name(&self) -> &'static str {
+        "DoubleComparisons"
+    }
 }
 
 impl<'a, 'tcx> Pass {
diff --git a/clippy_lints/src/double_parens.rs b/clippy_lints/src/double_parens.rs
index 38381b069f0..71b2f5f51a7 100644
--- a/clippy_lints/src/double_parens.rs
+++ b/clippy_lints/src/double_parens.rs
@@ -29,6 +29,10 @@ impl LintPass for DoubleParens {
     fn get_lints(&self) -> LintArray {
         lint_array!(DOUBLE_PARENS)
     }
+
+    fn name(&self) -> &'static str {
+        "DoubleParens"
+    }
 }
 
 impl EarlyLintPass for DoubleParens {
diff --git a/clippy_lints/src/drop_forget_ref.rs b/clippy_lints/src/drop_forget_ref.rs
index 4a2a38f6ea1..b437d603005 100644
--- a/clippy_lints/src/drop_forget_ref.rs
+++ b/clippy_lints/src/drop_forget_ref.rs
@@ -112,6 +112,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(DROP_REF, FORGET_REF, DROP_COPY, FORGET_COPY)
     }
+
+    fn name(&self) -> &'static str {
+        "DropForgetRef"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
diff --git a/clippy_lints/src/duration_subsec.rs b/clippy_lints/src/duration_subsec.rs
index 3ac98c71644..3935099fdce 100644
--- a/clippy_lints/src/duration_subsec.rs
+++ b/clippy_lints/src/duration_subsec.rs
@@ -36,6 +36,10 @@ impl LintPass for DurationSubsec {
     fn get_lints(&self) -> LintArray {
         lint_array!(DURATION_SUBSEC)
     }
+
+    fn name(&self) -> &'static str {
+        "DurationSubsec"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for DurationSubsec {
diff --git a/clippy_lints/src/else_if_without_else.rs b/clippy_lints/src/else_if_without_else.rs
index f633d81764b..c01ad486484 100644
--- a/clippy_lints/src/else_if_without_else.rs
+++ b/clippy_lints/src/else_if_without_else.rs
@@ -46,6 +46,10 @@ impl LintPass for ElseIfWithoutElse {
     fn get_lints(&self) -> LintArray {
         lint_array!(ELSE_IF_WITHOUT_ELSE)
     }
+
+    fn name(&self) -> &'static str {
+        "ElseIfWithoutElse"
+    }
 }
 
 impl EarlyLintPass for ElseIfWithoutElse {
diff --git a/clippy_lints/src/empty_enum.rs b/clippy_lints/src/empty_enum.rs
index 71e84bf1b47..ab80625f685 100644
--- a/clippy_lints/src/empty_enum.rs
+++ b/clippy_lints/src/empty_enum.rs
@@ -30,6 +30,10 @@ impl LintPass for EmptyEnum {
     fn get_lints(&self) -> LintArray {
         lint_array!(EMPTY_ENUM)
     }
+
+    fn name(&self) -> &'static str {
+        "EmptyEnum"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for EmptyEnum {
diff --git a/clippy_lints/src/entry.rs b/clippy_lints/src/entry.rs
index 646a2569bbe..8de881d0425 100644
--- a/clippy_lints/src/entry.rs
+++ b/clippy_lints/src/entry.rs
@@ -44,6 +44,10 @@ impl LintPass for HashMapLint {
     fn get_lints(&self) -> LintArray {
         lint_array!(MAP_ENTRY)
     }
+
+    fn name(&self) -> &'static str {
+        "HashMap"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for HashMapLint {
diff --git a/clippy_lints/src/enum_clike.rs b/clippy_lints/src/enum_clike.rs
index ab9bc6cd0ca..46501d55497 100644
--- a/clippy_lints/src/enum_clike.rs
+++ b/clippy_lints/src/enum_clike.rs
@@ -40,6 +40,10 @@ impl LintPass for UnportableVariant {
     fn get_lints(&self) -> LintArray {
         lint_array!(ENUM_CLIKE_UNPORTABLE_VARIANT)
     }
+
+    fn name(&self) -> &'static str {
+        "UnportableVariant"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for UnportableVariant {
diff --git a/clippy_lints/src/enum_glob_use.rs b/clippy_lints/src/enum_glob_use.rs
index 9402c2a5aad..4806736682f 100644
--- a/clippy_lints/src/enum_glob_use.rs
+++ b/clippy_lints/src/enum_glob_use.rs
@@ -32,6 +32,10 @@ impl LintPass for EnumGlobUse {
     fn get_lints(&self) -> LintArray {
         lint_array!(ENUM_GLOB_USE)
     }
+
+    fn name(&self) -> &'static str {
+        "EnumGlobUse"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for EnumGlobUse {
diff --git a/clippy_lints/src/enum_variants.rs b/clippy_lints/src/enum_variants.rs
index ffaa8b2811a..74d61c0f6a0 100644
--- a/clippy_lints/src/enum_variants.rs
+++ b/clippy_lints/src/enum_variants.rs
@@ -124,6 +124,10 @@ impl LintPass for EnumVariantNames {
             MODULE_INCEPTION
         )
     }
+
+    fn name(&self) -> &'static str {
+        "EnumVariantNames"
+    }
 }
 
 fn var2str(var: &Variant) -> LocalInternedString {
diff --git a/clippy_lints/src/eq_op.rs b/clippy_lints/src/eq_op.rs
index 93132534a76..38c9a05b44c 100644
--- a/clippy_lints/src/eq_op.rs
+++ b/clippy_lints/src/eq_op.rs
@@ -52,6 +52,10 @@ impl LintPass for EqOp {
     fn get_lints(&self) -> LintArray {
         lint_array!(EQ_OP, OP_REF)
     }
+
+    fn name(&self) -> &'static str {
+        "EqOp"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for EqOp {
diff --git a/clippy_lints/src/erasing_op.rs b/clippy_lints/src/erasing_op.rs
index fea31855543..a1d851377eb 100644
--- a/clippy_lints/src/erasing_op.rs
+++ b/clippy_lints/src/erasing_op.rs
@@ -32,6 +32,10 @@ impl LintPass for ErasingOp {
     fn get_lints(&self) -> LintArray {
         lint_array!(ERASING_OP)
     }
+
+    fn name(&self) -> &'static str {
+        "ErasingOp"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for ErasingOp {
diff --git a/clippy_lints/src/escape.rs b/clippy_lints/src/escape.rs
index a7b47fd1e54..a276579b1b5 100644
--- a/clippy_lints/src/escape.rs
+++ b/clippy_lints/src/escape.rs
@@ -52,6 +52,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(BOXED_LOCAL)
     }
+
+    fn name(&self) -> &'static str {
+        "BoxedLocal"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
diff --git a/clippy_lints/src/eta_reduction.rs b/clippy_lints/src/eta_reduction.rs
index 624d215492f..cc86aee7def 100644
--- a/clippy_lints/src/eta_reduction.rs
+++ b/clippy_lints/src/eta_reduction.rs
@@ -36,6 +36,10 @@ impl LintPass for EtaPass {
     fn get_lints(&self) -> LintArray {
         lint_array!(REDUNDANT_CLOSURE)
     }
+
+    fn name(&self) -> &'static str {
+        "EtaReduction"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for EtaPass {
diff --git a/clippy_lints/src/eval_order_dependence.rs b/clippy_lints/src/eval_order_dependence.rs
index 2b4b0d40239..8c933ef74d2 100644
--- a/clippy_lints/src/eval_order_dependence.rs
+++ b/clippy_lints/src/eval_order_dependence.rs
@@ -61,6 +61,10 @@ impl LintPass for EvalOrderDependence {
     fn get_lints(&self) -> LintArray {
         lint_array!(EVAL_ORDER_DEPENDENCE, DIVERGING_SUB_EXPRESSION)
     }
+
+    fn name(&self) -> &'static str {
+        "EvalOrderDependence"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for EvalOrderDependence {
diff --git a/clippy_lints/src/excessive_precision.rs b/clippy_lints/src/excessive_precision.rs
index f17b82ab33d..27e033f688d 100644
--- a/clippy_lints/src/excessive_precision.rs
+++ b/clippy_lints/src/excessive_precision.rs
@@ -41,6 +41,10 @@ impl LintPass for ExcessivePrecision {
     fn get_lints(&self) -> LintArray {
         lint_array!(EXCESSIVE_PRECISION)
     }
+
+    fn name(&self) -> &'static str {
+        "ExcessivePrecision"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for ExcessivePrecision {
diff --git a/clippy_lints/src/explicit_write.rs b/clippy_lints/src/explicit_write.rs
index 0bbc85a0416..2be2bb058bb 100644
--- a/clippy_lints/src/explicit_write.rs
+++ b/clippy_lints/src/explicit_write.rs
@@ -31,6 +31,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(EXPLICIT_WRITE)
     }
+
+    fn name(&self) -> &'static str {
+        "ExplicitWrite"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
diff --git a/clippy_lints/src/fallible_impl_from.rs b/clippy_lints/src/fallible_impl_from.rs
index 2d11b3bd947..3669e8998a4 100644
--- a/clippy_lints/src/fallible_impl_from.rs
+++ b/clippy_lints/src/fallible_impl_from.rs
@@ -34,6 +34,10 @@ impl LintPass for FallibleImplFrom {
     fn get_lints(&self) -> LintArray {
         lint_array!(FALLIBLE_IMPL_FROM)
     }
+
+    fn name(&self) -> &'static str {
+        "FallibleImpleFrom"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for FallibleImplFrom {
diff --git a/clippy_lints/src/format.rs b/clippy_lints/src/format.rs
index 90e19af15d0..f14c281fcc9 100644
--- a/clippy_lints/src/format.rs
+++ b/clippy_lints/src/format.rs
@@ -40,6 +40,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array![USELESS_FORMAT]
     }
+
+    fn name(&self) -> &'static str {
+        "UselessFormat"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
diff --git a/clippy_lints/src/formatting.rs b/clippy_lints/src/formatting.rs
index 6459e7b81c6..ecc6f9565d0 100644
--- a/clippy_lints/src/formatting.rs
+++ b/clippy_lints/src/formatting.rs
@@ -89,6 +89,10 @@ impl LintPass for Formatting {
             POSSIBLE_MISSING_COMMA
         )
     }
+
+    fn name(&self) -> &'static str {
+        "Formatting"
+    }
 }
 
 impl EarlyLintPass for Formatting {
diff --git a/clippy_lints/src/functions.rs b/clippy_lints/src/functions.rs
index a2b7d31b183..cb69e96c8e4 100644
--- a/clippy_lints/src/functions.rs
+++ b/clippy_lints/src/functions.rs
@@ -74,6 +74,10 @@ impl LintPass for Functions {
     fn get_lints(&self) -> LintArray {
         lint_array!(TOO_MANY_ARGUMENTS, NOT_UNSAFE_PTR_ARG_DEREF)
     }
+
+    fn name(&self) -> &'static str {
+        "Functions"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Functions {
diff --git a/clippy_lints/src/identity_conversion.rs b/clippy_lints/src/identity_conversion.rs
index d0e1ee57748..2c0e389119f 100644
--- a/clippy_lints/src/identity_conversion.rs
+++ b/clippy_lints/src/identity_conversion.rs
@@ -34,6 +34,10 @@ impl LintPass for IdentityConversion {
     fn get_lints(&self) -> LintArray {
         lint_array!(IDENTITY_CONVERSION)
     }
+
+    fn name(&self) -> &'static str {
+        "IdentityConversion"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for IdentityConversion {
diff --git a/clippy_lints/src/identity_op.rs b/clippy_lints/src/identity_op.rs
index 862c289fce1..89d41c79629 100644
--- a/clippy_lints/src/identity_op.rs
+++ b/clippy_lints/src/identity_op.rs
@@ -30,6 +30,10 @@ impl LintPass for IdentityOp {
     fn get_lints(&self) -> LintArray {
         lint_array!(IDENTITY_OP)
     }
+
+    fn name(&self) -> &'static str {
+        "IdentityOp"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for IdentityOp {
diff --git a/clippy_lints/src/if_not_else.rs b/clippy_lints/src/if_not_else.rs
index 19554c7e207..38213141de3 100644
--- a/clippy_lints/src/if_not_else.rs
+++ b/clippy_lints/src/if_not_else.rs
@@ -44,6 +44,10 @@ impl LintPass for IfNotElse {
     fn get_lints(&self) -> LintArray {
         lint_array!(IF_NOT_ELSE)
     }
+
+    fn name(&self) -> &'static str {
+        "IfNotElse"
+    }
 }
 
 impl EarlyLintPass for IfNotElse {
diff --git a/clippy_lints/src/implicit_return.rs b/clippy_lints/src/implicit_return.rs
index 073c37eefc5..b25b3bce652 100644
--- a/clippy_lints/src/implicit_return.rs
+++ b/clippy_lints/src/implicit_return.rs
@@ -114,6 +114,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(IMPLICIT_RETURN)
     }
+
+    fn name(&self) -> &'static str {
+        "ImplicitReturn"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
diff --git a/clippy_lints/src/indexing_slicing.rs b/clippy_lints/src/indexing_slicing.rs
index b4893c759c8..19e2283dc07 100644
--- a/clippy_lints/src/indexing_slicing.rs
+++ b/clippy_lints/src/indexing_slicing.rs
@@ -91,6 +91,10 @@ impl LintPass for IndexingSlicing {
     fn get_lints(&self) -> LintArray {
         lint_array!(INDEXING_SLICING, OUT_OF_BOUNDS_INDEXING)
     }
+
+    fn name(&self) -> &'static str {
+        "IndexSlicing"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for IndexingSlicing {
diff --git a/clippy_lints/src/infallible_destructuring_match.rs b/clippy_lints/src/infallible_destructuring_match.rs
index 5d0c5a4a79d..704b583f813 100644
--- a/clippy_lints/src/infallible_destructuring_match.rs
+++ b/clippy_lints/src/infallible_destructuring_match.rs
@@ -47,6 +47,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(INFALLIBLE_DESTRUCTURING_MATCH)
     }
+
+    fn name(&self) -> &'static str {
+        "InfallibleDestructingMatch"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
diff --git a/clippy_lints/src/infinite_iter.rs b/clippy_lints/src/infinite_iter.rs
index c25c4ec488f..9f2bcd48787 100644
--- a/clippy_lints/src/infinite_iter.rs
+++ b/clippy_lints/src/infinite_iter.rs
@@ -45,6 +45,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(INFINITE_ITER, MAYBE_INFINITE_ITER)
     }
+
+    fn name(&self) -> &'static str {
+        "InfiniteIter"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
diff --git a/clippy_lints/src/inherent_impl.rs b/clippy_lints/src/inherent_impl.rs
index 52aa73d7a10..5585ce4cbef 100644
--- a/clippy_lints/src/inherent_impl.rs
+++ b/clippy_lints/src/inherent_impl.rs
@@ -56,6 +56,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(MULTIPLE_INHERENT_IMPL)
     }
+
+    fn name(&self) -> &'static str {
+        "MultipleInherientImpl"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
diff --git a/clippy_lints/src/inline_fn_without_body.rs b/clippy_lints/src/inline_fn_without_body.rs
index a092f86658b..bdc17ab4624 100644
--- a/clippy_lints/src/inline_fn_without_body.rs
+++ b/clippy_lints/src/inline_fn_without_body.rs
@@ -35,6 +35,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(INLINE_FN_WITHOUT_BODY)
     }
+
+    fn name(&self) -> &'static str {
+        "InlineFnWithoutBody"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
diff --git a/clippy_lints/src/int_plus_one.rs b/clippy_lints/src/int_plus_one.rs
index 547052f3429..aee3b7cc542 100644
--- a/clippy_lints/src/int_plus_one.rs
+++ b/clippy_lints/src/int_plus_one.rs
@@ -36,6 +36,10 @@ impl LintPass for IntPlusOne {
     fn get_lints(&self) -> LintArray {
         lint_array!(INT_PLUS_ONE)
     }
+
+    fn name(&self) -> &'static str {
+        "IntPlusOne"
+    }
 }
 
 // cases:
diff --git a/clippy_lints/src/invalid_ref.rs b/clippy_lints/src/invalid_ref.rs
index 03b099b4393..90649535958 100644
--- a/clippy_lints/src/invalid_ref.rs
+++ b/clippy_lints/src/invalid_ref.rs
@@ -32,6 +32,10 @@ impl LintPass for InvalidRef {
     fn get_lints(&self) -> LintArray {
         lint_array!(INVALID_REF)
     }
+
+    fn name(&self) -> &'static str {
+        "InvalidRef"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for InvalidRef {
diff --git a/clippy_lints/src/items_after_statements.rs b/clippy_lints/src/items_after_statements.rs
index 0af8c3dd5cb..dd283d897a5 100644
--- a/clippy_lints/src/items_after_statements.rs
+++ b/clippy_lints/src/items_after_statements.rs
@@ -40,6 +40,10 @@ impl LintPass for ItemsAfterStatements {
     fn get_lints(&self) -> LintArray {
         lint_array!(ITEMS_AFTER_STATEMENTS)
     }
+
+    fn name(&self) -> &'static str {
+        "ItemsAfterStatements"
+    }
 }
 
 impl EarlyLintPass for ItemsAfterStatements {
diff --git a/clippy_lints/src/large_enum_variant.rs b/clippy_lints/src/large_enum_variant.rs
index d5bc2a8fad7..0b3cf07e50a 100644
--- a/clippy_lints/src/large_enum_variant.rs
+++ b/clippy_lints/src/large_enum_variant.rs
@@ -46,6 +46,10 @@ impl LintPass for LargeEnumVariant {
     fn get_lints(&self) -> LintArray {
         lint_array!(LARGE_ENUM_VARIANT)
     }
+
+    fn name(&self) -> &'static str {
+        "LargeEnumVariant"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for LargeEnumVariant {
diff --git a/clippy_lints/src/len_zero.rs b/clippy_lints/src/len_zero.rs
index b15ba5a4783..2764cd6ffd9 100644
--- a/clippy_lints/src/len_zero.rs
+++ b/clippy_lints/src/len_zero.rs
@@ -77,6 +77,10 @@ impl LintPass for LenZero {
     fn get_lints(&self) -> LintArray {
         lint_array!(LEN_ZERO, LEN_WITHOUT_IS_EMPTY)
     }
+
+    fn name(&self) -> &'static str {
+        "LenZero"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for LenZero {
diff --git a/clippy_lints/src/let_if_seq.rs b/clippy_lints/src/let_if_seq.rs
index 5154c6d4d08..3eb25cfb36a 100644
--- a/clippy_lints/src/let_if_seq.rs
+++ b/clippy_lints/src/let_if_seq.rs
@@ -60,6 +60,10 @@ impl LintPass for LetIfSeq {
     fn get_lints(&self) -> LintArray {
         lint_array!(USELESS_LET_IF_SEQ)
     }
+
+    fn name(&self) -> &'static str {
+        "LetIfSeq"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for LetIfSeq {
diff --git a/clippy_lints/src/lib.rs b/clippy_lints/src/lib.rs
index 9d77c3c64a2..4683d353ccf 100644
--- a/clippy_lints/src/lib.rs
+++ b/clippy_lints/src/lib.rs
@@ -212,15 +212,22 @@ pub fn register_pre_expansion_lints(
     store: &mut rustc::lint::LintStore,
     conf: &Conf,
 ) {
-    store.register_pre_expansion_pass(Some(session), box write::Pass);
-    store.register_pre_expansion_pass(Some(session), box redundant_field_names::RedundantFieldNames);
+    store.register_pre_expansion_pass(Some(session), true, false, box write::Pass);
     store.register_pre_expansion_pass(
         Some(session),
+        true,
+        false,
+        box redundant_field_names::RedundantFieldNames,
+    );
+    store.register_pre_expansion_pass(
+        Some(session),
+        true,
+        false,
         box non_expressive_names::NonExpressiveNames {
             single_char_binding_names_threshold: conf.single_char_binding_names_threshold,
         },
     );
-    store.register_pre_expansion_pass(Some(session), box attrs::CfgAttrPass);
+    store.register_pre_expansion_pass(Some(session), true, false, box attrs::CfgAttrPass);
 }
 
 pub fn read_conf(reg: &rustc_plugin::Registry<'_>) -> Conf {
diff --git a/clippy_lints/src/lifetimes.rs b/clippy_lints/src/lifetimes.rs
index f7512446c87..5562d750dac 100644
--- a/clippy_lints/src/lifetimes.rs
+++ b/clippy_lints/src/lifetimes.rs
@@ -61,6 +61,10 @@ impl LintPass for LifetimePass {
     fn get_lints(&self) -> LintArray {
         lint_array!(NEEDLESS_LIFETIMES, EXTRA_UNUSED_LIFETIMES)
     }
+
+    fn name(&self) -> &'static str {
+        "LifeTimes"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for LifetimePass {
diff --git a/clippy_lints/src/literal_representation.rs b/clippy_lints/src/literal_representation.rs
index d6e6ffa61b3..801e54f055c 100644
--- a/clippy_lints/src/literal_representation.rs
+++ b/clippy_lints/src/literal_representation.rs
@@ -346,6 +346,10 @@ impl LintPass for LiteralDigitGrouping {
             MISTYPED_LITERAL_SUFFIXES,
         )
     }
+
+    fn name(&self) -> &'static str {
+        "LiteralDigitGrouping"
+    }
 }
 
 impl EarlyLintPass for LiteralDigitGrouping {
@@ -493,6 +497,10 @@ impl LintPass for LiteralRepresentation {
     fn get_lints(&self) -> LintArray {
         lint_array!(DECIMAL_LITERAL_REPRESENTATION)
     }
+
+    fn name(&self) -> &'static str {
+        "DecimalLiteralRepresentation"
+    }
 }
 
 impl EarlyLintPass for LiteralRepresentation {
diff --git a/clippy_lints/src/loops.rs b/clippy_lints/src/loops.rs
index 70ff86087ea..64e76c09989 100644
--- a/clippy_lints/src/loops.rs
+++ b/clippy_lints/src/loops.rs
@@ -465,6 +465,10 @@ impl LintPass for Pass {
             WHILE_IMMUTABLE_CONDITION,
         )
     }
+
+    fn name(&self) -> &'static str {
+        "Loops"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
diff --git a/clippy_lints/src/map_clone.rs b/clippy_lints/src/map_clone.rs
index 4db0ca759db..49bd8f650e5 100644
--- a/clippy_lints/src/map_clone.rs
+++ b/clippy_lints/src/map_clone.rs
@@ -46,6 +46,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(MAP_CLONE)
     }
+
+    fn name(&self) -> &'static str {
+        "MapClone"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
diff --git a/clippy_lints/src/map_unit_fn.rs b/clippy_lints/src/map_unit_fn.rs
index ad5761f5f04..bd4b4043824 100644
--- a/clippy_lints/src/map_unit_fn.rs
+++ b/clippy_lints/src/map_unit_fn.rs
@@ -81,6 +81,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(OPTION_MAP_UNIT_FN, RESULT_MAP_UNIT_FN)
     }
+
+    fn name(&self) -> &'static str {
+        "MapUnit"
+    }
 }
 
 fn is_unit_type(ty: ty::Ty<'_>) -> bool {
diff --git a/clippy_lints/src/matches.rs b/clippy_lints/src/matches.rs
index b003da44236..adb8dab5c42 100644
--- a/clippy_lints/src/matches.rs
+++ b/clippy_lints/src/matches.rs
@@ -202,6 +202,10 @@ impl LintPass for MatchPass {
             MATCH_AS_REF
         )
     }
+
+    fn name(&self) -> &'static str {
+        "Matches"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for MatchPass {
diff --git a/clippy_lints/src/mem_discriminant.rs b/clippy_lints/src/mem_discriminant.rs
index a75959e58fa..a40b1eab2c7 100644
--- a/clippy_lints/src/mem_discriminant.rs
+++ b/clippy_lints/src/mem_discriminant.rs
@@ -31,6 +31,10 @@ impl LintPass for MemDiscriminant {
     fn get_lints(&self) -> LintArray {
         lint_array![MEM_DISCRIMINANT_NON_ENUM]
     }
+
+    fn name(&self) -> &'static str {
+        "MemDiscriminant"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for MemDiscriminant {
diff --git a/clippy_lints/src/mem_forget.rs b/clippy_lints/src/mem_forget.rs
index f83a8b5f7fe..0f25070318e 100644
--- a/clippy_lints/src/mem_forget.rs
+++ b/clippy_lints/src/mem_forget.rs
@@ -27,6 +27,10 @@ impl LintPass for MemForget {
     fn get_lints(&self) -> LintArray {
         lint_array![MEM_FORGET]
     }
+
+    fn name(&self) -> &'static str {
+        "MemForget"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for MemForget {
diff --git a/clippy_lints/src/mem_replace.rs b/clippy_lints/src/mem_replace.rs
index d649895e33f..1b43794bcb7 100644
--- a/clippy_lints/src/mem_replace.rs
+++ b/clippy_lints/src/mem_replace.rs
@@ -36,6 +36,10 @@ impl LintPass for MemReplace {
     fn get_lints(&self) -> LintArray {
         lint_array![MEM_REPLACE_OPTION_WITH_NONE]
     }
+
+    fn name(&self) -> &'static str {
+        "MemReplace"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for MemReplace {
diff --git a/clippy_lints/src/methods/mod.rs b/clippy_lints/src/methods/mod.rs
index 4126b78e676..16c3e1fb631 100644
--- a/clippy_lints/src/methods/mod.rs
+++ b/clippy_lints/src/methods/mod.rs
@@ -814,6 +814,10 @@ impl LintPass for Pass {
             INTO_ITER_ON_REF,
         )
     }
+
+    fn name(&self) -> &'static str {
+        "Methods"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
diff --git a/clippy_lints/src/minmax.rs b/clippy_lints/src/minmax.rs
index beea667dd43..19bede8a280 100644
--- a/clippy_lints/src/minmax.rs
+++ b/clippy_lints/src/minmax.rs
@@ -31,6 +31,10 @@ impl LintPass for MinMaxPass {
     fn get_lints(&self) -> LintArray {
         lint_array!(MIN_MAX)
     }
+
+    fn name(&self) -> &'static str {
+        "MinMax"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for MinMaxPass {
diff --git a/clippy_lints/src/misc.rs b/clippy_lints/src/misc.rs
index 88a6d62ee6d..01f5a633387 100644
--- a/clippy_lints/src/misc.rs
+++ b/clippy_lints/src/misc.rs
@@ -242,6 +242,10 @@ impl LintPass for Pass {
             FLOAT_CMP_CONST
         )
     }
+
+    fn name(&self) -> &'static str {
+        "MiscLints"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
diff --git a/clippy_lints/src/misc_early.rs b/clippy_lints/src/misc_early.rs
index 2cda1accc56..eb35da05908 100644
--- a/clippy_lints/src/misc_early.rs
+++ b/clippy_lints/src/misc_early.rs
@@ -187,6 +187,10 @@ impl LintPass for MiscEarly {
             BUILTIN_TYPE_SHADOW
         )
     }
+
+    fn name(&self) -> &'static str {
+        "MiscEarlyLints"
+    }
 }
 
 // Used to find `return` statements or equivalents e.g. `?`
diff --git a/clippy_lints/src/missing_doc.rs b/clippy_lints/src/missing_doc.rs
index 22084bd12cb..9fd67e2fcbf 100644
--- a/clippy_lints/src/missing_doc.rs
+++ b/clippy_lints/src/missing_doc.rs
@@ -90,6 +90,10 @@ impl LintPass for MissingDoc {
     fn get_lints(&self) -> LintArray {
         lint_array![MISSING_DOCS_IN_PRIVATE_ITEMS]
     }
+
+    fn name(&self) -> &'static str {
+        "MissingDoc"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for MissingDoc {
diff --git a/clippy_lints/src/missing_inline.rs b/clippy_lints/src/missing_inline.rs
index e9d0d2d77f1..754215799e5 100644
--- a/clippy_lints/src/missing_inline.rs
+++ b/clippy_lints/src/missing_inline.rs
@@ -83,6 +83,10 @@ impl LintPass for MissingInline {
     fn get_lints(&self) -> LintArray {
         lint_array![MISSING_INLINE_IN_PUBLIC_ITEMS]
     }
+
+    fn name(&self) -> &'static str {
+        "MissingInline"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for MissingInline {
diff --git a/clippy_lints/src/multiple_crate_versions.rs b/clippy_lints/src/multiple_crate_versions.rs
index 6a042fa8c0a..f772fa2b21c 100644
--- a/clippy_lints/src/multiple_crate_versions.rs
+++ b/clippy_lints/src/multiple_crate_versions.rs
@@ -37,6 +37,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(MULTIPLE_CRATE_VERSIONS)
     }
+
+    fn name(&self) -> &'static str {
+        "MultipleCrateVersions"
+    }
 }
 
 impl EarlyLintPass for Pass {
diff --git a/clippy_lints/src/mut_mut.rs b/clippy_lints/src/mut_mut.rs
index 9aa3cce9d4b..b244c7f3031 100644
--- a/clippy_lints/src/mut_mut.rs
+++ b/clippy_lints/src/mut_mut.rs
@@ -30,6 +30,10 @@ impl LintPass for MutMut {
     fn get_lints(&self) -> LintArray {
         lint_array!(MUT_MUT)
     }
+
+    fn name(&self) -> &'static str {
+        "MutMut"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for MutMut {
diff --git a/clippy_lints/src/mut_reference.rs b/clippy_lints/src/mut_reference.rs
index 5293c80ca2b..716abbe31fe 100644
--- a/clippy_lints/src/mut_reference.rs
+++ b/clippy_lints/src/mut_reference.rs
@@ -30,6 +30,10 @@ impl LintPass for UnnecessaryMutPassed {
     fn get_lints(&self) -> LintArray {
         lint_array!(UNNECESSARY_MUT_PASSED)
     }
+
+    fn name(&self) -> &'static str {
+        "UnneccessaryMutPassed"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for UnnecessaryMutPassed {
diff --git a/clippy_lints/src/mutex_atomic.rs b/clippy_lints/src/mutex_atomic.rs
index b85f4b8ad30..fa0e8288b30 100644
--- a/clippy_lints/src/mutex_atomic.rs
+++ b/clippy_lints/src/mutex_atomic.rs
@@ -53,6 +53,10 @@ impl LintPass for MutexAtomic {
     fn get_lints(&self) -> LintArray {
         lint_array!(MUTEX_ATOMIC, MUTEX_INTEGER)
     }
+
+    fn name(&self) -> &'static str {
+        "Mutex"
+    }
 }
 
 pub struct MutexAtomic;
diff --git a/clippy_lints/src/needless_bool.rs b/clippy_lints/src/needless_bool.rs
index 3b1fea465f5..49f607f525d 100644
--- a/clippy_lints/src/needless_bool.rs
+++ b/clippy_lints/src/needless_bool.rs
@@ -61,6 +61,10 @@ impl LintPass for NeedlessBool {
     fn get_lints(&self) -> LintArray {
         lint_array!(NEEDLESS_BOOL)
     }
+
+    fn name(&self) -> &'static str {
+        "NeedlessBool"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for NeedlessBool {
@@ -141,6 +145,10 @@ impl LintPass for BoolComparison {
     fn get_lints(&self) -> LintArray {
         lint_array!(BOOL_COMPARISON)
     }
+
+    fn name(&self) -> &'static str {
+        "BoolComparison"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for BoolComparison {
diff --git a/clippy_lints/src/needless_borrow.rs b/clippy_lints/src/needless_borrow.rs
index f21cbe8b9ad..a35f31a9803 100644
--- a/clippy_lints/src/needless_borrow.rs
+++ b/clippy_lints/src/needless_borrow.rs
@@ -39,6 +39,10 @@ impl LintPass for NeedlessBorrow {
     fn get_lints(&self) -> LintArray {
         lint_array!(NEEDLESS_BORROW)
     }
+
+    fn name(&self) -> &'static str {
+        "NeedlessBorrow"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for NeedlessBorrow {
diff --git a/clippy_lints/src/needless_borrowed_ref.rs b/clippy_lints/src/needless_borrowed_ref.rs
index 792e38e1875..6a0032f91b3 100644
--- a/clippy_lints/src/needless_borrowed_ref.rs
+++ b/clippy_lints/src/needless_borrowed_ref.rs
@@ -58,6 +58,10 @@ impl LintPass for NeedlessBorrowedRef {
     fn get_lints(&self) -> LintArray {
         lint_array!(NEEDLESS_BORROWED_REFERENCE)
     }
+
+    fn name(&self) -> &'static str {
+        "NeedlessBorrowedRef"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for NeedlessBorrowedRef {
diff --git a/clippy_lints/src/needless_continue.rs b/clippy_lints/src/needless_continue.rs
index 0b5ea255d7f..19d7ab32fea 100644
--- a/clippy_lints/src/needless_continue.rs
+++ b/clippy_lints/src/needless_continue.rs
@@ -107,6 +107,10 @@ impl LintPass for NeedlessContinue {
     fn get_lints(&self) -> LintArray {
         lint_array!(NEEDLESS_CONTINUE)
     }
+
+    fn name(&self) -> &'static str {
+        "NeedlessContinue"
+    }
 }
 
 impl EarlyLintPass for NeedlessContinue {
diff --git a/clippy_lints/src/needless_pass_by_value.rs b/clippy_lints/src/needless_pass_by_value.rs
index cb1fe475a1e..88eb36534b5 100644
--- a/clippy_lints/src/needless_pass_by_value.rs
+++ b/clippy_lints/src/needless_pass_by_value.rs
@@ -56,6 +56,10 @@ impl LintPass for NeedlessPassByValue {
     fn get_lints(&self) -> LintArray {
         lint_array![NEEDLESS_PASS_BY_VALUE]
     }
+
+    fn name(&self) -> &'static str {
+        "NeedlessPassByValue"
+    }
 }
 
 macro_rules! need {
diff --git a/clippy_lints/src/needless_update.rs b/clippy_lints/src/needless_update.rs
index ab22e2c19b3..1d91feddcbe 100644
--- a/clippy_lints/src/needless_update.rs
+++ b/clippy_lints/src/needless_update.rs
@@ -33,6 +33,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(NEEDLESS_UPDATE)
     }
+
+    fn name(&self) -> &'static str {
+        "NeedUpdate"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
diff --git a/clippy_lints/src/neg_cmp_op_on_partial_ord.rs b/clippy_lints/src/neg_cmp_op_on_partial_ord.rs
index 919c771ccf5..50031dd68cf 100644
--- a/clippy_lints/src/neg_cmp_op_on_partial_ord.rs
+++ b/clippy_lints/src/neg_cmp_op_on_partial_ord.rs
@@ -48,6 +48,10 @@ impl LintPass for NoNegCompOpForPartialOrd {
     fn get_lints(&self) -> LintArray {
         lint_array!(NEG_CMP_OP_ON_PARTIAL_ORD)
     }
+
+    fn name(&self) -> &'static str {
+        "NoNegCompOpForPartialOrd"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for NoNegCompOpForPartialOrd {
diff --git a/clippy_lints/src/neg_multiply.rs b/clippy_lints/src/neg_multiply.rs
index 846794d8b99..b207433b5ab 100644
--- a/clippy_lints/src/neg_multiply.rs
+++ b/clippy_lints/src/neg_multiply.rs
@@ -30,6 +30,10 @@ impl LintPass for NegMultiply {
     fn get_lints(&self) -> LintArray {
         lint_array!(NEG_MULTIPLY)
     }
+
+    fn name(&self) -> &'static str {
+        "NegMultiply"
+    }
 }
 
 #[allow(clippy::match_same_arms)]
diff --git a/clippy_lints/src/new_without_default.rs b/clippy_lints/src/new_without_default.rs
index 37e0446faed..f851ae4638e 100644
--- a/clippy_lints/src/new_without_default.rs
+++ b/clippy_lints/src/new_without_default.rs
@@ -93,6 +93,10 @@ impl LintPass for NewWithoutDefault {
     fn get_lints(&self) -> LintArray {
         lint_array!(NEW_WITHOUT_DEFAULT)
     }
+
+    fn name(&self) -> &'static str {
+        "NewWithoutDefault"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for NewWithoutDefault {
diff --git a/clippy_lints/src/no_effect.rs b/clippy_lints/src/no_effect.rs
index 648c198df08..7799e8fecf2 100644
--- a/clippy_lints/src/no_effect.rs
+++ b/clippy_lints/src/no_effect.rs
@@ -100,6 +100,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(NO_EFFECT, UNNECESSARY_OPERATION)
     }
+
+    fn name(&self) -> &'static str {
+        "NoEffect"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
diff --git a/clippy_lints/src/non_copy_const.rs b/clippy_lints/src/non_copy_const.rs
index 11295c3c092..cbf6099dd7d 100644
--- a/clippy_lints/src/non_copy_const.rs
+++ b/clippy_lints/src/non_copy_const.rs
@@ -147,6 +147,10 @@ impl LintPass for NonCopyConst {
     fn get_lints(&self) -> LintArray {
         lint_array!(DECLARE_INTERIOR_MUTABLE_CONST, BORROW_INTERIOR_MUTABLE_CONST)
     }
+
+    fn name(&self) -> &'static str {
+        "NonCopyConst"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for NonCopyConst {
diff --git a/clippy_lints/src/non_expressive_names.rs b/clippy_lints/src/non_expressive_names.rs
index f39cae46de0..3bdf2c38d23 100644
--- a/clippy_lints/src/non_expressive_names.rs
+++ b/clippy_lints/src/non_expressive_names.rs
@@ -71,6 +71,10 @@ impl LintPass for NonExpressiveNames {
     fn get_lints(&self) -> LintArray {
         lint_array!(SIMILAR_NAMES, MANY_SINGLE_CHAR_NAMES, JUST_UNDERSCORES_AND_DIGITS)
     }
+
+    fn name(&self) -> &'static str {
+        "NoneExpressiveNames"
+    }
 }
 
 struct ExistingName {
diff --git a/clippy_lints/src/ok_if_let.rs b/clippy_lints/src/ok_if_let.rs
index 5f15662c90c..0789df0d76b 100644
--- a/clippy_lints/src/ok_if_let.rs
+++ b/clippy_lints/src/ok_if_let.rs
@@ -41,6 +41,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(IF_LET_SOME_RESULT)
     }
+
+    fn name(&self) -> &'static str {
+        "OkIfLet"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
diff --git a/clippy_lints/src/open_options.rs b/clippy_lints/src/open_options.rs
index fe572d86c1b..31a6caa50d6 100644
--- a/clippy_lints/src/open_options.rs
+++ b/clippy_lints/src/open_options.rs
@@ -30,6 +30,10 @@ impl LintPass for NonSensical {
     fn get_lints(&self) -> LintArray {
         lint_array!(NONSENSICAL_OPEN_OPTIONS)
     }
+
+    fn name(&self) -> &'static str {
+        "OpenOptions"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for NonSensical {
diff --git a/clippy_lints/src/overflow_check_conditional.rs b/clippy_lints/src/overflow_check_conditional.rs
index d76a9f96eff..d424e8bcaad 100644
--- a/clippy_lints/src/overflow_check_conditional.rs
+++ b/clippy_lints/src/overflow_check_conditional.rs
@@ -28,6 +28,10 @@ impl LintPass for OverflowCheckConditional {
     fn get_lints(&self) -> LintArray {
         lint_array!(OVERFLOW_CHECK_CONDITIONAL)
     }
+
+    fn name(&self) -> &'static str {
+        "OverflowCheckConditional"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for OverflowCheckConditional {
diff --git a/clippy_lints/src/panic_unimplemented.rs b/clippy_lints/src/panic_unimplemented.rs
index f5c3a26e080..d0f7487c24a 100644
--- a/clippy_lints/src/panic_unimplemented.rs
+++ b/clippy_lints/src/panic_unimplemented.rs
@@ -48,6 +48,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(PANIC_PARAMS, UNIMPLEMENTED)
     }
+
+    fn name(&self) -> &'static str {
+        "PanicUnimplemented"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
diff --git a/clippy_lints/src/partialeq_ne_impl.rs b/clippy_lints/src/partialeq_ne_impl.rs
index 03d2d5d3bab..b9d5102ccd6 100644
--- a/clippy_lints/src/partialeq_ne_impl.rs
+++ b/clippy_lints/src/partialeq_ne_impl.rs
@@ -35,6 +35,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(PARTIALEQ_NE_IMPL)
     }
+
+    fn name(&self) -> &'static str {
+        "PartialEqNeImpl"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
diff --git a/clippy_lints/src/precedence.rs b/clippy_lints/src/precedence.rs
index 44e82984c54..ed03a8c6aa7 100644
--- a/clippy_lints/src/precedence.rs
+++ b/clippy_lints/src/precedence.rs
@@ -35,6 +35,10 @@ impl LintPass for Precedence {
     fn get_lints(&self) -> LintArray {
         lint_array!(PRECEDENCE)
     }
+
+    fn name(&self) -> &'static str {
+        "Precedence"
+    }
 }
 
 impl EarlyLintPass for Precedence {
diff --git a/clippy_lints/src/ptr.rs b/clippy_lints/src/ptr.rs
index 87cd9892893..6b2528248b5 100644
--- a/clippy_lints/src/ptr.rs
+++ b/clippy_lints/src/ptr.rs
@@ -102,6 +102,10 @@ impl LintPass for PointerPass {
     fn get_lints(&self) -> LintArray {
         lint_array!(PTR_ARG, CMP_NULL, MUT_FROM_REF)
     }
+
+    fn name(&self) -> &'static str {
+        "Ptr"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for PointerPass {
diff --git a/clippy_lints/src/ptr_offset_with_cast.rs b/clippy_lints/src/ptr_offset_with_cast.rs
index 32d330ac171..4ff3f7643ba 100644
--- a/clippy_lints/src/ptr_offset_with_cast.rs
+++ b/clippy_lints/src/ptr_offset_with_cast.rs
@@ -46,6 +46,10 @@ impl lint::LintPass for Pass {
     fn get_lints(&self) -> lint::LintArray {
         lint_array!(PTR_OFFSET_WITH_CAST)
     }
+
+    fn name(&self) -> &'static str {
+        "PtrOffsetWithCast"
+    }
 }
 
 impl<'a, 'tcx> lint::LateLintPass<'a, 'tcx> for Pass {
diff --git a/clippy_lints/src/question_mark.rs b/clippy_lints/src/question_mark.rs
index 03f6ea12e00..b30cbe4ce9a 100644
--- a/clippy_lints/src/question_mark.rs
+++ b/clippy_lints/src/question_mark.rs
@@ -41,6 +41,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(QUESTION_MARK)
     }
+
+    fn name(&self) -> &'static str {
+        "QuestionMark"
+    }
 }
 
 impl Pass {
diff --git a/clippy_lints/src/ranges.rs b/clippy_lints/src/ranges.rs
index 2e01afc2258..ef600184ebe 100644
--- a/clippy_lints/src/ranges.rs
+++ b/clippy_lints/src/ranges.rs
@@ -97,6 +97,10 @@ impl LintPass for Pass {
             RANGE_MINUS_ONE
         )
     }
+
+    fn name(&self) -> &'static str {
+        "Ranges"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
diff --git a/clippy_lints/src/redundant_clone.rs b/clippy_lints/src/redundant_clone.rs
index f584ef19d5a..59d1a4297a5 100644
--- a/clippy_lints/src/redundant_clone.rs
+++ b/clippy_lints/src/redundant_clone.rs
@@ -73,6 +73,10 @@ impl LintPass for RedundantClone {
     fn get_lints(&self) -> LintArray {
         lint_array!(REDUNDANT_CLONE)
     }
+
+    fn name(&self) -> &'static str {
+        "RedundantClone"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for RedundantClone {
diff --git a/clippy_lints/src/redundant_field_names.rs b/clippy_lints/src/redundant_field_names.rs
index 9076d67cb14..aeb7bb6493c 100644
--- a/clippy_lints/src/redundant_field_names.rs
+++ b/clippy_lints/src/redundant_field_names.rs
@@ -38,6 +38,10 @@ impl LintPass for RedundantFieldNames {
     fn get_lints(&self) -> LintArray {
         lint_array!(REDUNDANT_FIELD_NAMES)
     }
+
+    fn name(&self) -> &'static str {
+        "RedundantFieldNames"
+    }
 }
 
 impl EarlyLintPass for RedundantFieldNames {
diff --git a/clippy_lints/src/redundant_pattern_matching.rs b/clippy_lints/src/redundant_pattern_matching.rs
index bc61ee8e7e3..1cf0838415f 100644
--- a/clippy_lints/src/redundant_pattern_matching.rs
+++ b/clippy_lints/src/redundant_pattern_matching.rs
@@ -49,6 +49,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(REDUNDANT_PATTERN_MATCHING)
     }
+
+    fn name(&self) -> &'static str {
+        "RedundantPatternMatching"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
diff --git a/clippy_lints/src/reference.rs b/clippy_lints/src/reference.rs
index 8d2543ef618..3a5af498017 100644
--- a/clippy_lints/src/reference.rs
+++ b/clippy_lints/src/reference.rs
@@ -30,6 +30,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(DEREF_ADDROF)
     }
+
+    fn name(&self) -> &'static str {
+        "DerefAddrOf"
+    }
 }
 
 fn without_parens(mut e: &Expr) -> &Expr {
@@ -84,6 +88,10 @@ impl LintPass for DerefPass {
     fn get_lints(&self) -> LintArray {
         lint_array!(REF_IN_DEREF)
     }
+
+    fn name(&self) -> &'static str {
+        "RefInDeref"
+    }
 }
 
 impl EarlyLintPass for DerefPass {
diff --git a/clippy_lints/src/regex.rs b/clippy_lints/src/regex.rs
index 6a58a6e73c7..0171c2a5283 100644
--- a/clippy_lints/src/regex.rs
+++ b/clippy_lints/src/regex.rs
@@ -76,6 +76,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(INVALID_REGEX, REGEX_MACRO, TRIVIAL_REGEX)
     }
+
+    fn name(&self) -> &'static str {
+        "Regex"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
diff --git a/clippy_lints/src/replace_consts.rs b/clippy_lints/src/replace_consts.rs
index ea51e4711cd..16c8cc3bc47 100644
--- a/clippy_lints/src/replace_consts.rs
+++ b/clippy_lints/src/replace_consts.rs
@@ -35,6 +35,10 @@ impl LintPass for ReplaceConsts {
     fn get_lints(&self) -> LintArray {
         lint_array!(REPLACE_CONSTS)
     }
+
+    fn name(&self) -> &'static str {
+        "ReplaceConsts"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for ReplaceConsts {
diff --git a/clippy_lints/src/returns.rs b/clippy_lints/src/returns.rs
index d81d04b81d3..83b4d7f9112 100644
--- a/clippy_lints/src/returns.rs
+++ b/clippy_lints/src/returns.rs
@@ -180,6 +180,10 @@ impl LintPass for ReturnPass {
     fn get_lints(&self) -> LintArray {
         lint_array!(NEEDLESS_RETURN, LET_AND_RETURN, UNUSED_UNIT)
     }
+
+    fn name(&self) -> &'static str {
+        "Return"
+    }
 }
 
 impl EarlyLintPass for ReturnPass {
diff --git a/clippy_lints/src/serde_api.rs b/clippy_lints/src/serde_api.rs
index da8675b38da..8090ed7fbcf 100644
--- a/clippy_lints/src/serde_api.rs
+++ b/clippy_lints/src/serde_api.rs
@@ -25,6 +25,10 @@ impl LintPass for Serde {
     fn get_lints(&self) -> LintArray {
         lint_array!(SERDE_API_MISUSE)
     }
+
+    fn name(&self) -> &'static str {
+        "SerdeAPI"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Serde {
diff --git a/clippy_lints/src/shadow.rs b/clippy_lints/src/shadow.rs
index c99b00bb98f..1f341bd22ee 100644
--- a/clippy_lints/src/shadow.rs
+++ b/clippy_lints/src/shadow.rs
@@ -82,6 +82,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(SHADOW_SAME, SHADOW_REUSE, SHADOW_UNRELATED)
     }
+
+    fn name(&self) -> &'static str {
+        "Shadow"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
diff --git a/clippy_lints/src/slow_vector_initialization.rs b/clippy_lints/src/slow_vector_initialization.rs
index aea414065d8..0765e4e11be 100644
--- a/clippy_lints/src/slow_vector_initialization.rs
+++ b/clippy_lints/src/slow_vector_initialization.rs
@@ -37,6 +37,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(SLOW_VECTOR_INITIALIZATION,)
     }
+
+    fn name(&self) -> &'static str {
+        "SlowVectorInit"
+    }
 }
 
 /// `VecAllocation` contains data regarding a vector allocated with `with_capacity` and then
diff --git a/clippy_lints/src/strings.rs b/clippy_lints/src/strings.rs
index ffec764fd5e..71784397463 100644
--- a/clippy_lints/src/strings.rs
+++ b/clippy_lints/src/strings.rs
@@ -79,6 +79,10 @@ impl LintPass for StringAdd {
     fn get_lints(&self) -> LintArray {
         lint_array!(STRING_ADD, STRING_ADD_ASSIGN)
     }
+
+    fn name(&self) -> &'static str {
+        "StringAdd"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for StringAdd {
@@ -151,6 +155,10 @@ impl LintPass for StringLitAsBytes {
     fn get_lints(&self) -> LintArray {
         lint_array!(STRING_LIT_AS_BYTES)
     }
+
+    fn name(&self) -> &'static str {
+        "StringLiteralAsBytes"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for StringLitAsBytes {
diff --git a/clippy_lints/src/suspicious_trait_impl.rs b/clippy_lints/src/suspicious_trait_impl.rs
index c6dd9504857..5f0e49dd7e6 100644
--- a/clippy_lints/src/suspicious_trait_impl.rs
+++ b/clippy_lints/src/suspicious_trait_impl.rs
@@ -57,6 +57,10 @@ impl LintPass for SuspiciousImpl {
     fn get_lints(&self) -> LintArray {
         lint_array![SUSPICIOUS_ARITHMETIC_IMPL, SUSPICIOUS_OP_ASSIGN_IMPL]
     }
+
+    fn name(&self) -> &'static str {
+        "SuspiciousImpl"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for SuspiciousImpl {
diff --git a/clippy_lints/src/swap.rs b/clippy_lints/src/swap.rs
index ddf33fcc411..860707c8239 100644
--- a/clippy_lints/src/swap.rs
+++ b/clippy_lints/src/swap.rs
@@ -57,6 +57,10 @@ impl LintPass for Swap {
     fn get_lints(&self) -> LintArray {
         lint_array![MANUAL_SWAP, ALMOST_SWAPPED]
     }
+
+    fn name(&self) -> &'static str {
+        "Swap"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Swap {
diff --git a/clippy_lints/src/temporary_assignment.rs b/clippy_lints/src/temporary_assignment.rs
index c8a01c3668c..0d8cfedf414 100644
--- a/clippy_lints/src/temporary_assignment.rs
+++ b/clippy_lints/src/temporary_assignment.rs
@@ -44,6 +44,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(TEMPORARY_ASSIGNMENT)
     }
+
+    fn name(&self) -> &'static str {
+        "TemporaryAssignment"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
diff --git a/clippy_lints/src/transmute.rs b/clippy_lints/src/transmute.rs
index 02205cfbd68..88371df0dca 100644
--- a/clippy_lints/src/transmute.rs
+++ b/clippy_lints/src/transmute.rs
@@ -219,6 +219,10 @@ impl LintPass for Transmute {
             TRANSMUTE_INT_TO_FLOAT,
         )
     }
+
+    fn name(&self) -> &'static str {
+        "Transmute"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Transmute {
diff --git a/clippy_lints/src/trivially_copy_pass_by_ref.rs b/clippy_lints/src/trivially_copy_pass_by_ref.rs
index 5ab73758301..4e3bb7d329e 100644
--- a/clippy_lints/src/trivially_copy_pass_by_ref.rs
+++ b/clippy_lints/src/trivially_copy_pass_by_ref.rs
@@ -142,6 +142,10 @@ impl LintPass for TriviallyCopyPassByRef {
     fn get_lints(&self) -> LintArray {
         lint_array![TRIVIALLY_COPY_PASS_BY_REF]
     }
+
+    fn name(&self) -> &'static str {
+        "TrivallyCopyPassByRef"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for TriviallyCopyPassByRef {
diff --git a/clippy_lints/src/types.rs b/clippy_lints/src/types.rs
index 898fd5a9808..4683ffb4c85 100644
--- a/clippy_lints/src/types.rs
+++ b/clippy_lints/src/types.rs
@@ -168,6 +168,10 @@ impl LintPass for TypePass {
     fn get_lints(&self) -> LintArray {
         lint_array!(BOX_VEC, VEC_BOX, OPTION_OPTION, LINKEDLIST, BORROWED_BOX)
     }
+
+    fn name(&self) -> &'static str {
+        "Types"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for TypePass {
@@ -467,6 +471,10 @@ impl LintPass for LetPass {
     fn get_lints(&self) -> LintArray {
         lint_array!(LET_UNIT_VALUE)
     }
+
+    fn name(&self) -> &'static str {
+        "LetUnitValue"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for LetPass {
@@ -531,6 +539,10 @@ impl LintPass for UnitCmp {
     fn get_lints(&self) -> LintArray {
         lint_array!(UNIT_CMP)
     }
+
+    fn name(&self) -> &'static str {
+        "UnicCmp"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for UnitCmp {
@@ -586,6 +598,10 @@ impl LintPass for UnitArg {
     fn get_lints(&self) -> LintArray {
         lint_array!(UNIT_ARG)
     }
+
+    fn name(&self) -> &'static str {
+        "UnitArg"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for UnitArg {
@@ -1073,6 +1089,10 @@ impl LintPass for CastPass {
             FN_TO_NUMERIC_CAST_WITH_TRUNCATION,
         )
     }
+
+    fn name(&self) -> &'static str {
+        "Casts"
+    }
 }
 
 // Check if the given type is either `core::ffi::c_void` or
@@ -1278,6 +1298,10 @@ impl LintPass for TypeComplexityPass {
     fn get_lints(&self) -> LintArray {
         lint_array!(TYPE_COMPLEXITY)
     }
+
+    fn name(&self) -> &'static str {
+        "TypeComplexityPass"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for TypeComplexityPass {
@@ -1442,6 +1466,10 @@ impl LintPass for CharLitAsU8 {
     fn get_lints(&self) -> LintArray {
         lint_array!(CHAR_LIT_AS_U8)
     }
+
+    fn name(&self) -> &'static str {
+        "CharLiteralAsU8"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for CharLitAsU8 {
@@ -1500,6 +1528,10 @@ impl LintPass for AbsurdExtremeComparisons {
     fn get_lints(&self) -> LintArray {
         lint_array!(ABSURD_EXTREME_COMPARISONS)
     }
+
+    fn name(&self) -> &'static str {
+        "AbsurdExtremeComparisons"
+    }
 }
 
 enum ExtremeType {
@@ -1675,6 +1707,10 @@ impl LintPass for InvalidUpcastComparisons {
     fn get_lints(&self) -> LintArray {
         lint_array!(INVALID_UPCAST_COMPARISONS)
     }
+
+    fn name(&self) -> &'static str {
+        "InvalidUpcastComparisons"
+    }
 }
 
 #[derive(Copy, Clone, Debug, Eq)]
@@ -1918,6 +1954,10 @@ impl LintPass for ImplicitHasher {
     fn get_lints(&self) -> LintArray {
         lint_array!(IMPLICIT_HASHER)
     }
+
+    fn name(&self) -> &'static str {
+        "ImplicitHasher"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for ImplicitHasher {
@@ -2265,6 +2305,10 @@ impl LintPass for RefToMut {
     fn get_lints(&self) -> LintArray {
         lint_array!(CAST_REF_TO_MUT)
     }
+
+    fn name(&self) -> &'static str {
+        "RefToMut"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for RefToMut {
diff --git a/clippy_lints/src/unicode.rs b/clippy_lints/src/unicode.rs
index d9207fd2131..d1f39a5e2c2 100644
--- a/clippy_lints/src/unicode.rs
+++ b/clippy_lints/src/unicode.rs
@@ -65,6 +65,10 @@ impl LintPass for Unicode {
     fn get_lints(&self) -> LintArray {
         lint_array!(ZERO_WIDTH_SPACE, NON_ASCII_LITERAL, UNICODE_NOT_NFC)
     }
+
+    fn name(&self) -> &'static str {
+        "Unicode"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Unicode {
diff --git a/clippy_lints/src/unsafe_removed_from_name.rs b/clippy_lints/src/unsafe_removed_from_name.rs
index 6beda8ce706..6cf1a582a65 100644
--- a/clippy_lints/src/unsafe_removed_from_name.rs
+++ b/clippy_lints/src/unsafe_removed_from_name.rs
@@ -32,6 +32,10 @@ impl LintPass for UnsafeNameRemoval {
     fn get_lints(&self) -> LintArray {
         lint_array!(UNSAFE_REMOVED_FROM_NAME)
     }
+
+    fn name(&self) -> &'static str {
+        "UnsafeNameRemoval"
+    }
 }
 
 impl EarlyLintPass for UnsafeNameRemoval {
diff --git a/clippy_lints/src/unused_io_amount.rs b/clippy_lints/src/unused_io_amount.rs
index 27deb0d9945..d54cd3bba03 100644
--- a/clippy_lints/src/unused_io_amount.rs
+++ b/clippy_lints/src/unused_io_amount.rs
@@ -36,6 +36,10 @@ impl LintPass for UnusedIoAmount {
     fn get_lints(&self) -> LintArray {
         lint_array!(UNUSED_IO_AMOUNT)
     }
+
+    fn name(&self) -> &'static str {
+        "UnusedIoAmount"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for UnusedIoAmount {
diff --git a/clippy_lints/src/unused_label.rs b/clippy_lints/src/unused_label.rs
index d53fd265d37..29d76a05118 100644
--- a/clippy_lints/src/unused_label.rs
+++ b/clippy_lints/src/unused_label.rs
@@ -39,6 +39,10 @@ impl LintPass for UnusedLabel {
     fn get_lints(&self) -> LintArray {
         lint_array!(UNUSED_LABEL)
     }
+
+    fn name(&self) -> &'static str {
+        "UnusedLable"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for UnusedLabel {
diff --git a/clippy_lints/src/unwrap.rs b/clippy_lints/src/unwrap.rs
index 369b33363b5..196715f77d7 100644
--- a/clippy_lints/src/unwrap.rs
+++ b/clippy_lints/src/unwrap.rs
@@ -184,6 +184,10 @@ impl<'a> LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(PANICKING_UNWRAP, UNNECESSARY_UNWRAP)
     }
+
+    fn name(&self) -> &'static str {
+        "Unwrap"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
diff --git a/clippy_lints/src/use_self.rs b/clippy_lints/src/use_self.rs
index 88cf01987b5..1f1d9ddbfec 100644
--- a/clippy_lints/src/use_self.rs
+++ b/clippy_lints/src/use_self.rs
@@ -51,6 +51,10 @@ impl LintPass for UseSelf {
     fn get_lints(&self) -> LintArray {
         lint_array!(USE_SELF)
     }
+
+    fn name(&self) -> &'static str {
+        "UseSelf"
+    }
 }
 
 const SEGMENTS_MSG: &str = "segments should be composed of at least 1 element";
diff --git a/clippy_lints/src/utils/author.rs b/clippy_lints/src/utils/author.rs
index 9623c6cbdad..19c3f3ad230 100644
--- a/clippy_lints/src/utils/author.rs
+++ b/clippy_lints/src/utils/author.rs
@@ -53,6 +53,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(LINT_AUTHOR)
     }
+
+    fn name(&self) -> &'static str {
+        "Author"
+    }
 }
 
 fn prelude() {
diff --git a/clippy_lints/src/utils/inspector.rs b/clippy_lints/src/utils/inspector.rs
index 4116f8ffbaf..758d1d2d365 100644
--- a/clippy_lints/src/utils/inspector.rs
+++ b/clippy_lints/src/utils/inspector.rs
@@ -35,6 +35,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(DEEP_CODE_INSPECTION)
     }
+
+    fn name(&self) -> &'static str {
+        "DeepCodeInspector"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
diff --git a/clippy_lints/src/utils/internal_lints.rs b/clippy_lints/src/utils/internal_lints.rs
index 788fc434d51..78950493699 100644
--- a/clippy_lints/src/utils/internal_lints.rs
+++ b/clippy_lints/src/utils/internal_lints.rs
@@ -98,6 +98,10 @@ impl LintPass for Clippy {
     fn get_lints(&self) -> LintArray {
         lint_array!(CLIPPY_LINTS_INTERNAL)
     }
+
+    fn name(&self) -> &'static str {
+        "ClippyLintsInternal"
+    }
 }
 
 impl EarlyLintPass for Clippy {
@@ -139,6 +143,9 @@ impl LintPass for LintWithoutLintPass {
     fn get_lints(&self) -> LintArray {
         lint_array!(LINT_WITHOUT_LINT_PASS)
     }
+    fn name(&self) -> &'static str {
+        "LintWithoutLintPass"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for LintWithoutLintPass {
@@ -248,6 +255,10 @@ impl LintPass for DefaultHashTypes {
     fn get_lints(&self) -> LintArray {
         lint_array!(DEFAULT_HASH_TYPES)
     }
+
+    fn name(&self) -> &'static str {
+        "DefaultHashType"
+    }
 }
 
 impl EarlyLintPass for DefaultHashTypes {
@@ -293,6 +304,10 @@ impl LintPass for CompilerLintFunctions {
     fn get_lints(&self) -> LintArray {
         lint_array!(COMPILER_LINT_FUNCTIONS)
     }
+
+    fn name(&self) -> &'static str {
+        "CompileLintFunctions"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for CompilerLintFunctions {
diff --git a/clippy_lints/src/vec.rs b/clippy_lints/src/vec.rs
index 407722bc66e..a99b6ca840c 100644
--- a/clippy_lints/src/vec.rs
+++ b/clippy_lints/src/vec.rs
@@ -32,6 +32,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(USELESS_VEC)
     }
+
+    fn name(&self) -> &'static str {
+        "UselessVec"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
diff --git a/clippy_lints/src/wildcard_dependencies.rs b/clippy_lints/src/wildcard_dependencies.rs
index fb88b1371f7..8ccf2c69cc7 100644
--- a/clippy_lints/src/wildcard_dependencies.rs
+++ b/clippy_lints/src/wildcard_dependencies.rs
@@ -33,6 +33,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(WILDCARD_DEPENDENCIES)
     }
+
+    fn name(&self) -> &'static str {
+        "WildcardDependencies"
+    }
 }
 
 impl EarlyLintPass for Pass {
diff --git a/clippy_lints/src/write.rs b/clippy_lints/src/write.rs
index c8c291c8cc8..36f7fee969b 100644
--- a/clippy_lints/src/write.rs
+++ b/clippy_lints/src/write.rs
@@ -175,6 +175,10 @@ impl LintPass for Pass {
             WRITE_LITERAL
         )
     }
+
+    fn name(&self) -> &'static str {
+        "Write"
+    }
 }
 
 impl EarlyLintPass for Pass {
diff --git a/clippy_lints/src/zero_div_zero.rs b/clippy_lints/src/zero_div_zero.rs
index 962d42e631e..a806be95432 100644
--- a/clippy_lints/src/zero_div_zero.rs
+++ b/clippy_lints/src/zero_div_zero.rs
@@ -28,6 +28,10 @@ impl LintPass for Pass {
     fn get_lints(&self) -> LintArray {
         lint_array!(ZERO_DIVIDED_BY_ZERO)
     }
+
+    fn name(&self) -> &'static str {
+        "ZeroDiv"
+    }
 }
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
diff --git a/src/driver.rs b/src/driver.rs
index 2faa77785bb..1ce6f6b7c49 100644
--- a/src/driver.rs
+++ b/src/driver.rs
@@ -123,7 +123,7 @@ pub fn main() {
                     let sess = &state.session;
                     let mut ls = sess.lint_store.borrow_mut();
                     for pass in early_lint_passes {
-                        ls.register_early_pass(Some(sess), true, pass);
+                        ls.register_early_pass(Some(sess), true, false, pass);
                     }
                     for pass in late_lint_passes {
                         ls.register_late_pass(Some(sess), true, pass);
diff --git a/tests/ui/lint_without_lint_pass.rs b/tests/ui/lint_without_lint_pass.rs
index 1f2fcd8faf6..a6f10a006db 100644
--- a/tests/ui/lint_without_lint_pass.rs
+++ b/tests/ui/lint_without_lint_pass.rs
@@ -25,6 +25,10 @@ impl lint::LintPass for Pass {
     fn get_lints(&self) -> lint::LintArray {
         lint_array!(TEST_LINT_REGISTERED)
     }
+
+    fn name(&self) -> &'static str {
+        "TEST_LINT"
+    }
 }
 
 fn main() {}