about summary refs log tree commit diff
diff options
context:
space:
mode:
authorGuillaume Gomez <guillaume1.gomez@gmail.com>2025-04-11 14:32:31 +0200
committerGuillaume Gomez <guillaume1.gomez@gmail.com>2025-09-27 11:29:49 +0200
commitc06a076634e4feab47e133fe6325af9659bab082 (patch)
treea76922c076d81c95adca4ac6aafe77383a0e9a10
parented05315867b7dd17a456beaabc3faf36357f9447 (diff)
downloadrust-c06a076634e4feab47e133fe6325af9659bab082.tar.gz
rust-c06a076634e4feab47e133fe6325af9659bab082.zip
Put back the `doc_cfg` code behind a nightly feature
-rw-r--r--compiler/rustc_ast_passes/src/feature_gate.rs1
-rw-r--r--src/librustdoc/passes/propagate_doc_cfg.rs6
-rw-r--r--tests/rustdoc-ui/cfg-hide-show-conflict.rs1
-rw-r--r--tests/rustdoc-ui/cfg-hide-show-conflict.stderr4
-rw-r--r--tests/rustdoc-ui/lints/doc_cfg_hide.rs1
-rw-r--r--tests/rustdoc-ui/lints/doc_cfg_hide.stderr6
-rw-r--r--tests/rustdoc/doc-auto-cfg.rs2
-rw-r--r--tests/rustdoc/doc-cfg/doc-cfg-hide.rs2
-rw-r--r--tests/rustdoc/doc-cfg/doc-cfg-implicit-gate.rs1
-rw-r--r--tests/rustdoc/doc_auto_cfg.rs5
-rw-r--r--tests/rustdoc/doc_auto_cfg_reexports.rs1
-rw-r--r--tests/rustdoc/impl/doc_auto_cfg_nested_impl.rs2
-rw-r--r--tests/rustdoc/reexport/doc_auto_cfg-reexport-foreign-113982.rs2
-rw-r--r--tests/rustdoc/reexport/glob-reexport-attribute-merge-doc-auto-cfg.rs2
-rw-r--r--tests/ui/feature-gates/feature-gate-doc_cfg.rs6
-rw-r--r--tests/ui/feature-gates/feature-gate-doc_cfg.stderr13
16 files changed, 35 insertions, 20 deletions
diff --git a/compiler/rustc_ast_passes/src/feature_gate.rs b/compiler/rustc_ast_passes/src/feature_gate.rs
index fe9cc8e61ed..35531378784 100644
--- a/compiler/rustc_ast_passes/src/feature_gate.rs
+++ b/compiler/rustc_ast_passes/src/feature_gate.rs
@@ -182,6 +182,7 @@ impl<'a> Visitor<'a> for PostExpansionVisitor<'a> {
 
                 gate_doc!(
                     "experimental" {
+                        cfg => doc_cfg
                         masked => doc_masked
                         notable_trait => doc_notable_trait
                     }
diff --git a/src/librustdoc/passes/propagate_doc_cfg.rs b/src/librustdoc/passes/propagate_doc_cfg.rs
index 1425687cd26..802f2fbe569 100644
--- a/src/librustdoc/passes/propagate_doc_cfg.rs
+++ b/src/librustdoc/passes/propagate_doc_cfg.rs
@@ -18,7 +18,11 @@ pub(crate) const PROPAGATE_DOC_CFG: Pass = Pass {
 };
 
 pub(crate) fn propagate_doc_cfg(cr: Crate, cx: &mut DocContext<'_>) -> Crate {
-    CfgPropagator { cx, cfg_info: CfgInfo::default() }.fold_crate(cr)
+    if cx.tcx.features().doc_cfg() {
+        CfgPropagator { cx, cfg_info: CfgInfo::default() }.fold_crate(cr)
+    } else {
+        cr
+    }
 }
 
 struct CfgPropagator<'a, 'tcx> {
diff --git a/tests/rustdoc-ui/cfg-hide-show-conflict.rs b/tests/rustdoc-ui/cfg-hide-show-conflict.rs
index a8a50fe15c7..8e98b95c85b 100644
--- a/tests/rustdoc-ui/cfg-hide-show-conflict.rs
+++ b/tests/rustdoc-ui/cfg-hide-show-conflict.rs
@@ -1,2 +1,3 @@
+#![feature(doc_cfg)]
 #![doc(auto_cfg(hide(target_os = "linux")))]
 #![doc(auto_cfg(show(windows, target_os = "linux")))] //~ ERROR
diff --git a/tests/rustdoc-ui/cfg-hide-show-conflict.stderr b/tests/rustdoc-ui/cfg-hide-show-conflict.stderr
index d2d0564606a..22231e82cd7 100644
--- a/tests/rustdoc-ui/cfg-hide-show-conflict.stderr
+++ b/tests/rustdoc-ui/cfg-hide-show-conflict.stderr
@@ -1,11 +1,11 @@
 error: same `cfg` was in `auto_cfg(hide(...))` and `auto_cfg(show(...))` on the same item
-  --> $DIR/cfg-hide-show-conflict.rs:2:31
+  --> $DIR/cfg-hide-show-conflict.rs:3:31
    |
 LL | #![doc(auto_cfg(show(windows, target_os = "linux")))]
    |                               ^^^^^^^^^^^^^^^^^^^
    |
 note: first change was here
-  --> $DIR/cfg-hide-show-conflict.rs:1:22
+  --> $DIR/cfg-hide-show-conflict.rs:2:22
    |
 LL | #![doc(auto_cfg(hide(target_os = "linux")))]
    |                      ^^^^^^^^^^^^^^^^^^^
diff --git a/tests/rustdoc-ui/lints/doc_cfg_hide.rs b/tests/rustdoc-ui/lints/doc_cfg_hide.rs
index 4f2625d00ce..397b21393e5 100644
--- a/tests/rustdoc-ui/lints/doc_cfg_hide.rs
+++ b/tests/rustdoc-ui/lints/doc_cfg_hide.rs
@@ -1,3 +1,4 @@
+#![feature(doc_cfg)]
 #![doc(auto_cfg(hide = "test"))] //~ ERROR
 #![doc(auto_cfg(hide))] //~ ERROR
 #![doc(auto_cfg(hide(not(windows))))] //~ ERROR
diff --git a/tests/rustdoc-ui/lints/doc_cfg_hide.stderr b/tests/rustdoc-ui/lints/doc_cfg_hide.stderr
index 22501d63c3f..0e9db5a30d8 100644
--- a/tests/rustdoc-ui/lints/doc_cfg_hide.stderr
+++ b/tests/rustdoc-ui/lints/doc_cfg_hide.stderr
@@ -1,5 +1,5 @@
 error: `#![doc(auto_cfg(hide(...)))]` only expects a list of items
-  --> $DIR/doc_cfg_hide.rs:1:8
+  --> $DIR/doc_cfg_hide.rs:2:8
    |
 LL | #![doc(auto_cfg(hide = "test"))]
    |        ^^^^^^^^^^^^^^^^^^^^^^^
@@ -7,13 +7,13 @@ LL | #![doc(auto_cfg(hide = "test"))]
    = note: `#[deny(invalid_doc_attributes)]` on by default
 
 error: `#![doc(auto_cfg(hide(...)))]` only expects a list of items
-  --> $DIR/doc_cfg_hide.rs:2:8
+  --> $DIR/doc_cfg_hide.rs:3:8
    |
 LL | #![doc(auto_cfg(hide))]
    |        ^^^^^^^^^^^^^^
 
 error: `#![doc(auto_cfg(hide(...)))]` only accepts identifiers or key/values items
-  --> $DIR/doc_cfg_hide.rs:3:22
+  --> $DIR/doc_cfg_hide.rs:4:22
    |
 LL | #![doc(auto_cfg(hide(not(windows))))]
    |                      ^^^^^^^^^^^^
diff --git a/tests/rustdoc/doc-auto-cfg.rs b/tests/rustdoc/doc-auto-cfg.rs
index b3fe8922fd7..e56cf18d08a 100644
--- a/tests/rustdoc/doc-auto-cfg.rs
+++ b/tests/rustdoc/doc-auto-cfg.rs
@@ -1,4 +1,4 @@
-#![feature(doc_auto_cfg)]
+#![feature(doc_cfg)]
 #![crate_name = "foo"]
 
 //@ has foo/fn.foo.html
diff --git a/tests/rustdoc/doc-cfg/doc-cfg-hide.rs b/tests/rustdoc/doc-cfg/doc-cfg-hide.rs
index cf906ede7e1..e919206d3a4 100644
--- a/tests/rustdoc/doc-cfg/doc-cfg-hide.rs
+++ b/tests/rustdoc/doc-cfg/doc-cfg-hide.rs
@@ -1,5 +1,5 @@
 #![crate_name = "oud"]
-#![feature(doc_auto_cfg, doc_cfg, doc_cfg_hide, no_core)]
+#![feature(doc_cfg)]
 
 #![doc(auto_cfg(hide(feature = "solecism")))]
 
diff --git a/tests/rustdoc/doc-cfg/doc-cfg-implicit-gate.rs b/tests/rustdoc/doc-cfg/doc-cfg-implicit-gate.rs
index 27923893bdd..9ae8b8fca4f 100644
--- a/tests/rustdoc/doc-cfg/doc-cfg-implicit-gate.rs
+++ b/tests/rustdoc/doc-cfg/doc-cfg-implicit-gate.rs
@@ -1,4 +1,5 @@
 //@ compile-flags:--cfg feature="worricow"
+#![feature(doc_cfg)]
 #![crate_name = "xenogenous"]
 
 //@ has 'xenogenous/struct.Worricow.html'
diff --git a/tests/rustdoc/doc_auto_cfg.rs b/tests/rustdoc/doc_auto_cfg.rs
index cb7c0e3f595..19ef174c177 100644
--- a/tests/rustdoc/doc_auto_cfg.rs
+++ b/tests/rustdoc/doc_auto_cfg.rs
@@ -1,10 +1,7 @@
 // Test covering RFC 3631 features.
 
 #![crate_name = "foo"]
-#![feature(no_core)]
-#![no_core]
-#![no_std]
-
+#![feature(doc_cfg)]
 #![doc(auto_cfg(hide(feature = "hidden")))]
 
 //@ has 'foo/index.html'
diff --git a/tests/rustdoc/doc_auto_cfg_reexports.rs b/tests/rustdoc/doc_auto_cfg_reexports.rs
index f226c52e2eb..f6315e9d49d 100644
--- a/tests/rustdoc/doc_auto_cfg_reexports.rs
+++ b/tests/rustdoc/doc_auto_cfg_reexports.rs
@@ -1,6 +1,7 @@
 // Checks that `cfg` are correctly applied on inlined reexports.
 
 #![crate_name = "foo"]
+#![feature(doc_cfg)]
 
 // Check with `std` item.
 //@ has 'foo/index.html' '//*[@class="stab portability"]' 'Non-moustache'
diff --git a/tests/rustdoc/impl/doc_auto_cfg_nested_impl.rs b/tests/rustdoc/impl/doc_auto_cfg_nested_impl.rs
index f85d7b23637..f24ebcd52ac 100644
--- a/tests/rustdoc/impl/doc_auto_cfg_nested_impl.rs
+++ b/tests/rustdoc/impl/doc_auto_cfg_nested_impl.rs
@@ -1,6 +1,6 @@
 // Regression test for <https://github.com/rust-lang/rust/issues/101129>.
 
-#![feature(doc_auto_cfg)]
+#![feature(doc_cfg)]
 #![crate_type = "lib"]
 #![crate_name = "foo"]
 
diff --git a/tests/rustdoc/reexport/doc_auto_cfg-reexport-foreign-113982.rs b/tests/rustdoc/reexport/doc_auto_cfg-reexport-foreign-113982.rs
index 76b25127a9c..f8ec4afc031 100644
--- a/tests/rustdoc/reexport/doc_auto_cfg-reexport-foreign-113982.rs
+++ b/tests/rustdoc/reexport/doc_auto_cfg-reexport-foreign-113982.rs
@@ -1,7 +1,7 @@
 //@ aux-build: issue-113982-doc_auto_cfg-reexport-foreign.rs
 
 // https://github.com/rust-lang/rust/issues/113982
-#![feature(no_core, doc_auto_cfg)]
+#![feature(no_core, doc_cfg)]
 #![no_core]
 #![crate_name = "foo"]
 
diff --git a/tests/rustdoc/reexport/glob-reexport-attribute-merge-doc-auto-cfg.rs b/tests/rustdoc/reexport/glob-reexport-attribute-merge-doc-auto-cfg.rs
index d0a2165ec8a..0aed2b0c462 100644
--- a/tests/rustdoc/reexport/glob-reexport-attribute-merge-doc-auto-cfg.rs
+++ b/tests/rustdoc/reexport/glob-reexport-attribute-merge-doc-auto-cfg.rs
@@ -2,7 +2,7 @@
 // the reexported item whereas glob reexports do with the `doc_auto_cfg` feature.
 
 #![crate_name = "foo"]
-#![feature(doc_auto_cfg)]
+#![feature(doc_cfg)]
 
 //@ has 'foo/index.html'
 // There are two items.
diff --git a/tests/ui/feature-gates/feature-gate-doc_cfg.rs b/tests/ui/feature-gates/feature-gate-doc_cfg.rs
index 83053e8c8bf..213a5a8c5a9 100644
--- a/tests/ui/feature-gates/feature-gate-doc_cfg.rs
+++ b/tests/ui/feature-gates/feature-gate-doc_cfg.rs
@@ -1,6 +1,2 @@
-//@ build-pass
-
-// FIXME: Remove this test once `doc_cfg` feature is completely removed.
-
-#[doc(cfg(unix))]
+#[doc(cfg(unix))] //~ ERROR
 fn main() {}
diff --git a/tests/ui/feature-gates/feature-gate-doc_cfg.stderr b/tests/ui/feature-gates/feature-gate-doc_cfg.stderr
new file mode 100644
index 00000000000..5315aaeeb3e
--- /dev/null
+++ b/tests/ui/feature-gates/feature-gate-doc_cfg.stderr
@@ -0,0 +1,13 @@
+error[E0658]: `#[doc(cfg)]` is experimental
+  --> $DIR/feature-gate-doc_cfg.rs:1:1
+   |
+LL | #[doc(cfg(unix))]
+   | ^^^^^^^^^^^^^^^^^
+   |
+   = note: see issue #43781 <https://github.com/rust-lang/rust/issues/43781> for more information
+   = help: add `#![feature(doc_cfg)]` to the crate attributes to enable
+   = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
+
+error: aborting due to 1 previous error
+
+For more information about this error, try `rustc --explain E0658`.