about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2022-02-19 06:45:29 +0100
committerGitHub <noreply@github.com>2022-02-19 06:45:29 +0100
commitf19adc7acc649ad2b18b6e172b683ebadb3d8a92 (patch)
tree4cd6e4c2d2b978efce0edd9d4d12e2268195a2b2
parent4fa71ed0f0589133a3ab4a565d572f2c5373fad0 (diff)
parentdbeab9c532080a52f5cc86fbb4ca679581b866fd (diff)
downloadrust-f19adc7acc649ad2b18b6e172b683ebadb3d8a92.tar.gz
rust-f19adc7acc649ad2b18b6e172b683ebadb3d8a92.zip
Rollup merge of #93658 - cchiw:issue-77443-fix, r=joshtriplett
Stabilize `#[cfg(panic = "...")]`

[Stabilization PR](https://rustc-dev-guide.rust-lang.org/stabilization_guide.html#stabilization-pr) for #77443
-rw-r--r--compiler/rustc_feature/src/accepted.rs2
-rw-r--r--compiler/rustc_feature/src/active.rs2
-rw-r--r--compiler/rustc_feature/src/builtin_attrs.rs1
-rw-r--r--library/core/tests/lib.rs2
-rw-r--r--src/doc/unstable-book/src/language-features/cfg-panic.md38
-rw-r--r--src/test/ui/cfg/cfg-panic-abort.rs2
-rw-r--r--src/test/ui/cfg/cfg-panic.rs2
-rw-r--r--src/test/ui/feature-gates/feature-gate-cfg-panic.rs11
-rw-r--r--src/test/ui/feature-gates/feature-gate-cfg-panic.stderr21
-rw-r--r--src/test/ui/fmt/format-args-capture.rs1
-rw-r--r--src/test/ui/issues/issue-68696-catch-during-unwind.rs1
11 files changed, 5 insertions, 78 deletions
diff --git a/compiler/rustc_feature/src/accepted.rs b/compiler/rustc_feature/src/accepted.rs
index 32a9d081ed8..d43f926d0a5 100644
--- a/compiler/rustc_feature/src/accepted.rs
+++ b/compiler/rustc_feature/src/accepted.rs
@@ -70,6 +70,8 @@ declare_features! (
     (accepted, cfg_attr_multi, "1.33.0", Some(54881), None),
     /// Allows the use of `#[cfg(doctest)]`, set when rustdoc is collecting doctests.
     (accepted, cfg_doctest, "1.40.0", Some(62210), None),
+    /// Enables `#[cfg(panic = "...")]` config key.
+    (accepted, cfg_panic, "1.60.0", Some(77443), None),
     /// Allows `cfg(target_feature = "...")`.
     (accepted, cfg_target_feature, "1.27.0", Some(29717), None),
     /// Allows `cfg(target_vendor = "...")`.
diff --git a/compiler/rustc_feature/src/active.rs b/compiler/rustc_feature/src/active.rs
index 9cb12778a56..5545abc6024 100644
--- a/compiler/rustc_feature/src/active.rs
+++ b/compiler/rustc_feature/src/active.rs
@@ -306,8 +306,6 @@ declare_features! (
     (active, c_variadic, "1.34.0", Some(44930), None),
     /// Allows capturing disjoint fields in a closure/generator (RFC 2229).
     (incomplete, capture_disjoint_fields, "1.49.0", Some(53488), None),
-    /// Enables `#[cfg(panic = "...")]` config key.
-    (active, cfg_panic, "1.49.0", Some(77443), None),
     /// Allows the use of `#[cfg(sanitize = "option")]`; set when -Zsanitizer is used.
     (active, cfg_sanitize, "1.41.0", Some(39699), None),
     /// Allows `cfg(target_abi = "...")`.
diff --git a/compiler/rustc_feature/src/builtin_attrs.rs b/compiler/rustc_feature/src/builtin_attrs.rs
index d9a986aba7d..1fb1a38a927 100644
--- a/compiler/rustc_feature/src/builtin_attrs.rs
+++ b/compiler/rustc_feature/src/builtin_attrs.rs
@@ -34,7 +34,6 @@ const GATED_CFGS: &[GatedCfg] = &[
     (sym::target_has_atomic_load_store, sym::cfg_target_has_atomic, cfg_fn!(cfg_target_has_atomic)),
     (sym::sanitize, sym::cfg_sanitize, cfg_fn!(cfg_sanitize)),
     (sym::version, sym::cfg_version, cfg_fn!(cfg_version)),
-    (sym::panic, sym::cfg_panic, cfg_fn!(cfg_panic)),
 ];
 
 /// Find a gated cfg determined by the `pred`icate which is given the cfg's name.
diff --git a/library/core/tests/lib.rs b/library/core/tests/lib.rs
index 32f3405243c..06c7be054a0 100644
--- a/library/core/tests/lib.rs
+++ b/library/core/tests/lib.rs
@@ -6,7 +6,7 @@
 #![feature(bool_to_option)]
 #![feature(box_syntax)]
 #![feature(cell_update)]
-#![feature(cfg_panic)]
+#![cfg_attr(bootstrap, feature(cfg_panic))]
 #![cfg_attr(bootstrap, feature(cfg_target_has_atomic))]
 #![feature(const_assume)]
 #![feature(const_black_box)]
diff --git a/src/doc/unstable-book/src/language-features/cfg-panic.md b/src/doc/unstable-book/src/language-features/cfg-panic.md
deleted file mode 100644
index f5b73128ad6..00000000000
--- a/src/doc/unstable-book/src/language-features/cfg-panic.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# `cfg_panic`
-
-The tracking issue for this feature is: [#77443]
-
-[#77443]: https://github.com/rust-lang/rust/issues/77443
-
-------------------------
-
-The `cfg_panic` feature makes it possible to execute different code
-depending on the panic strategy.
-
-Possible values at the moment are `"unwind"` or `"abort"`, although
-it is possible that new panic strategies may be added to Rust in the
-future.
-
-## Examples
-
-```rust
-#![feature(cfg_panic)]
-
-#[cfg(panic = "unwind")]
-fn a() {
-    // ...
-}
-
-#[cfg(not(panic = "unwind"))]
-fn a() {
-    // ...
-}
-
-fn b() {
-    if cfg!(panic = "abort") {
-        // ...
-    } else {
-        // ...
-    }
-}
-```
diff --git a/src/test/ui/cfg/cfg-panic-abort.rs b/src/test/ui/cfg/cfg-panic-abort.rs
index 9b88eff12ed..3853b598a7a 100644
--- a/src/test/ui/cfg/cfg-panic-abort.rs
+++ b/src/test/ui/cfg/cfg-panic-abort.rs
@@ -1,7 +1,7 @@
 // build-pass
 // compile-flags: -C panic=abort
 // no-prefer-dynamic
-#![feature(cfg_panic)]
+
 
 #[cfg(panic = "unwind")]
 pub fn bad() -> i32 { }
diff --git a/src/test/ui/cfg/cfg-panic.rs b/src/test/ui/cfg/cfg-panic.rs
index d2113e4f5ec..fb3e5059c81 100644
--- a/src/test/ui/cfg/cfg-panic.rs
+++ b/src/test/ui/cfg/cfg-panic.rs
@@ -4,7 +4,7 @@
 // ignore-emscripten no panic_unwind implementation
 // ignore-wasm32     no panic_unwind implementation
 // ignore-wasm64     no panic_unwind implementation
-#![feature(cfg_panic)]
+
 
 #[cfg(panic = "abort")]
 pub fn bad() -> i32 { }
diff --git a/src/test/ui/feature-gates/feature-gate-cfg-panic.rs b/src/test/ui/feature-gates/feature-gate-cfg-panic.rs
deleted file mode 100644
index 1508374d942..00000000000
--- a/src/test/ui/feature-gates/feature-gate-cfg-panic.rs
+++ /dev/null
@@ -1,11 +0,0 @@
-#[cfg(panic = "unwind")]
-//~^ ERROR `cfg(panic)` is experimental and subject to change
-fn foo() -> bool { true }
-#[cfg(not(panic = "unwind"))]
-//~^ ERROR `cfg(panic)` is experimental and subject to change
-fn foo() -> bool { false }
-
-
-fn main() {
-    assert!(foo());
-}
diff --git a/src/test/ui/feature-gates/feature-gate-cfg-panic.stderr b/src/test/ui/feature-gates/feature-gate-cfg-panic.stderr
deleted file mode 100644
index ea5cd54fa90..00000000000
--- a/src/test/ui/feature-gates/feature-gate-cfg-panic.stderr
+++ /dev/null
@@ -1,21 +0,0 @@
-error[E0658]: `cfg(panic)` is experimental and subject to change
-  --> $DIR/feature-gate-cfg-panic.rs:1:7
-   |
-LL | #[cfg(panic = "unwind")]
-   |       ^^^^^^^^^^^^^^^^
-   |
-   = note: see issue #77443 <https://github.com/rust-lang/rust/issues/77443> for more information
-   = help: add `#![feature(cfg_panic)]` to the crate attributes to enable
-
-error[E0658]: `cfg(panic)` is experimental and subject to change
-  --> $DIR/feature-gate-cfg-panic.rs:4:11
-   |
-LL | #[cfg(not(panic = "unwind"))]
-   |           ^^^^^^^^^^^^^^^^
-   |
-   = note: see issue #77443 <https://github.com/rust-lang/rust/issues/77443> for more information
-   = help: add `#![feature(cfg_panic)]` to the crate attributes to enable
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/ui/fmt/format-args-capture.rs b/src/test/ui/fmt/format-args-capture.rs
index d31d2a6c336..560352b5cb9 100644
--- a/src/test/ui/fmt/format-args-capture.rs
+++ b/src/test/ui/fmt/format-args-capture.rs
@@ -1,5 +1,4 @@
 // run-pass
-#![feature(cfg_panic)]
 
 fn main() {
     named_argument_takes_precedence_to_captured();
diff --git a/src/test/ui/issues/issue-68696-catch-during-unwind.rs b/src/test/ui/issues/issue-68696-catch-during-unwind.rs
index f25a78f59cd..2b12a62d0eb 100644
--- a/src/test/ui/issues/issue-68696-catch-during-unwind.rs
+++ b/src/test/ui/issues/issue-68696-catch-during-unwind.rs
@@ -4,7 +4,6 @@
 // entering the catch_unwind.
 //
 // run-pass
-#![feature(cfg_panic)]
 
 use std::panic::catch_unwind;