about summary refs log tree commit diff
path: root/compiler
diff options
context:
space:
mode:
authorJonas Schievink <jonasschievink@gmail.com>2020-09-25 19:42:35 +0200
committerGitHub <noreply@github.com>2020-09-25 19:42:35 +0200
commitba44e9fe3455ce2eab75e6c097a1e0180f54f9ba (patch)
tree725c7c0aed8ef873c940b04dfae5cd48bdc1571b /compiler
parent452aa759b7845ce9ca0a9ee7c26b1c47698e89be (diff)
parent438d229b25921e0b1d4b731586cff27a2e79e99f (diff)
downloadrust-ba44e9fe3455ce2eab75e6c097a1e0180f54f9ba.tar.gz
rust-ba44e9fe3455ce2eab75e6c097a1e0180f54f9ba.zip
Rollup merge of #77073 - lcnr:ty-trait-param, r=matthewjasper
dead_code: look at trait impls even if they don't contain items

fixes #70225
Diffstat (limited to 'compiler')
-rw-r--r--compiler/rustc_passes/src/dead.rs5
1 files changed, 4 insertions, 1 deletions
diff --git a/compiler/rustc_passes/src/dead.rs b/compiler/rustc_passes/src/dead.rs
index fe6653e98da..98ded4189cf 100644
--- a/compiler/rustc_passes/src/dead.rs
+++ b/compiler/rustc_passes/src/dead.rs
@@ -369,7 +369,7 @@ fn has_allow_dead_code_or_lang_attr(
 //         - This is because lang items are always callable from elsewhere.
 //   or
 //   2) We are not sure to be live or not
-//     * Implementation of a trait method
+//     * Implementations of traits and trait methods
 struct LifeSeeder<'k, 'tcx> {
     worklist: Vec<hir::HirId>,
     krate: &'k hir::Crate<'k>,
@@ -415,6 +415,9 @@ impl<'v, 'k, 'tcx> ItemLikeVisitor<'v> for LifeSeeder<'k, 'tcx> {
                 }
             }
             hir::ItemKind::Impl { ref of_trait, items, .. } => {
+                if of_trait.is_some() {
+                    self.worklist.push(item.hir_id);
+                }
                 for impl_item_ref in items {
                     let impl_item = self.krate.impl_item(impl_item_ref.id);
                     if of_trait.is_some()