From af80b0f2cd0505bcc86eaa675d1ab403110d373a Mon Sep 17 00:00:00 2001 From: Takayuki Maeda Date: Mon, 13 Apr 2026 17:21:17 +0900 Subject: [PATCH 1/2] do not lint doc_cfg as an unused feature --- compiler/rustc_middle/src/ty/context.rs | 6 +++++- tests/ui/lint/unused-features/used-doc-cfg.rs | 8 ++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 tests/ui/lint/unused-features/used-doc-cfg.rs diff --git a/compiler/rustc_middle/src/ty/context.rs b/compiler/rustc_middle/src/ty/context.rs index f0707cfbbb40..b908a6c6e843 100644 --- a/compiler/rustc_middle/src/ty/context.rs +++ b/compiler/rustc_middle/src/ty/context.rs @@ -44,7 +44,7 @@ use rustc_session::cstore::{CrateStoreDyn, Untracked}; use rustc_session::lint::Lint; use rustc_span::def_id::{CRATE_DEF_ID, DefPathHash, StableCrateId}; -use rustc_span::{DUMMY_SP, Ident, Span, Symbol, kw}; +use rustc_span::{DUMMY_SP, Ident, Span, Symbol, kw, sym}; use rustc_type_ir::TyKind::*; pub use rustc_type_ir::lift::Lift; use rustc_type_ir::{CollectAndApply, TypeFlags, WithCachedTypeInfo, elaborate, search_graph}; @@ -1705,6 +1705,10 @@ struct UnusedFeature { // in downstream crates. It should never be linted, but should we // hack this in the linter to ignore it? && f.as_str() != "restricted_std" + // `doc_cfg` affects rustdoc behavior: rustdoc checks it via + // `tcx.features().doc_cfg()`, but a normal rustc compilation may + // never observe that use. Do not lint it as unused here. + && *f != sym::doc_cfg }) .collect::>(); diff --git a/tests/ui/lint/unused-features/used-doc-cfg.rs b/tests/ui/lint/unused-features/used-doc-cfg.rs new file mode 100644 index 000000000000..91c4a1600fc2 --- /dev/null +++ b/tests/ui/lint/unused-features/used-doc-cfg.rs @@ -0,0 +1,8 @@ +//@ check-pass +//@ compile-flags: --check-cfg=cfg(feature,values("enabled_feature")) +#![crate_type = "lib"] +#![deny(unused_features)] +#![feature(doc_cfg)] + +#[cfg(feature = "enabled_feature")] +pub fn foo() {} From 5c80d9031dcba3f8e49ce8fb131b6248f2249bca Mon Sep 17 00:00:00 2001 From: Takayuki Maeda Date: Tue, 14 Apr 2026 02:08:02 +0900 Subject: [PATCH 2/2] add a link to issue 154487 --- tests/ui/lint/unused-features/used-doc-cfg.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/ui/lint/unused-features/used-doc-cfg.rs b/tests/ui/lint/unused-features/used-doc-cfg.rs index 91c4a1600fc2..edd1dd6b10ce 100644 --- a/tests/ui/lint/unused-features/used-doc-cfg.rs +++ b/tests/ui/lint/unused-features/used-doc-cfg.rs @@ -1,5 +1,7 @@ //@ check-pass //@ compile-flags: --check-cfg=cfg(feature,values("enabled_feature")) +// Regression test for https://github.com/rust-lang/rust/issues/154487 + #![crate_type = "lib"] #![deny(unused_features)] #![feature(doc_cfg)]