From ff5cd8908c11bdb0d8bd5895a879b37cee7e1857 Mon Sep 17 00:00:00 2001 From: r01and Date: Wed, 22 Nov 2023 05:45:28 +0000 Subject: [PATCH] Not warn unused symbols in default trait methods --- compiler/rustc_passes/src/dead.rs | 4 +++- tests/ui/lint/dead-code/issue-118139.rs | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 tests/ui/lint/dead-code/issue-118139.rs diff --git a/compiler/rustc_passes/src/dead.rs b/compiler/rustc_passes/src/dead.rs index b4ebc2db3d600..f067820a11929 100644 --- a/compiler/rustc_passes/src/dead.rs +++ b/compiler/rustc_passes/src/dead.rs @@ -670,7 +670,9 @@ fn check_trait_item( use hir::TraitItemKind::{Const, Fn}; if matches!(tcx.def_kind(id.owner_id), DefKind::AssocConst | DefKind::AssocFn) { let trait_item = tcx.hir().trait_item(id); - if matches!(trait_item.kind, Const(_, Some(_)) | Fn(_, hir::TraitFn::Provided(_))) + if let Fn(_, hir::TraitFn::Provided(_)) = trait_item.kind { + worklist.push((trait_item.owner_id.def_id, ComesFromAllowExpect::No)); + } else if let Const(_, Some(_)) = trait_item.kind && let Some(comes_from_allow) = has_allow_dead_code_or_lang_attr(tcx, trait_item.owner_id.def_id) { diff --git a/tests/ui/lint/dead-code/issue-118139.rs b/tests/ui/lint/dead-code/issue-118139.rs new file mode 100644 index 0000000000000..8be79e5b0913a --- /dev/null +++ b/tests/ui/lint/dead-code/issue-118139.rs @@ -0,0 +1,16 @@ +// run-pass + +enum Category { + A, + B, +} + +trait Foo { + fn foo(&self) -> Category { + Category::A + } +} + +fn main() { + let _c = Category::B; +}