mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-02 07:22:42 +00:00
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
This commit is contained in:
commit
f19adc7acc
@ -70,6 +70,8 @@ declare_features! (
|
|||||||
(accepted, cfg_attr_multi, "1.33.0", Some(54881), None),
|
(accepted, cfg_attr_multi, "1.33.0", Some(54881), None),
|
||||||
/// Allows the use of `#[cfg(doctest)]`, set when rustdoc is collecting doctests.
|
/// Allows the use of `#[cfg(doctest)]`, set when rustdoc is collecting doctests.
|
||||||
(accepted, cfg_doctest, "1.40.0", Some(62210), None),
|
(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 = "...")`.
|
/// Allows `cfg(target_feature = "...")`.
|
||||||
(accepted, cfg_target_feature, "1.27.0", Some(29717), None),
|
(accepted, cfg_target_feature, "1.27.0", Some(29717), None),
|
||||||
/// Allows `cfg(target_vendor = "...")`.
|
/// Allows `cfg(target_vendor = "...")`.
|
||||||
|
@ -306,8 +306,6 @@ declare_features! (
|
|||||||
(active, c_variadic, "1.34.0", Some(44930), None),
|
(active, c_variadic, "1.34.0", Some(44930), None),
|
||||||
/// Allows capturing disjoint fields in a closure/generator (RFC 2229).
|
/// Allows capturing disjoint fields in a closure/generator (RFC 2229).
|
||||||
(incomplete, capture_disjoint_fields, "1.49.0", Some(53488), None),
|
(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.
|
/// Allows the use of `#[cfg(sanitize = "option")]`; set when -Zsanitizer is used.
|
||||||
(active, cfg_sanitize, "1.41.0", Some(39699), None),
|
(active, cfg_sanitize, "1.41.0", Some(39699), None),
|
||||||
/// Allows `cfg(target_abi = "...")`.
|
/// Allows `cfg(target_abi = "...")`.
|
||||||
|
@ -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::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::sanitize, sym::cfg_sanitize, cfg_fn!(cfg_sanitize)),
|
||||||
(sym::version, sym::cfg_version, cfg_fn!(cfg_version)),
|
(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.
|
/// Find a gated cfg determined by the `pred`icate which is given the cfg's name.
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
#![feature(bool_to_option)]
|
#![feature(bool_to_option)]
|
||||||
#![feature(box_syntax)]
|
#![feature(box_syntax)]
|
||||||
#![feature(cell_update)]
|
#![feature(cell_update)]
|
||||||
#![feature(cfg_panic)]
|
#![cfg_attr(bootstrap, feature(cfg_panic))]
|
||||||
#![cfg_attr(bootstrap, feature(cfg_target_has_atomic))]
|
#![cfg_attr(bootstrap, feature(cfg_target_has_atomic))]
|
||||||
#![feature(const_assume)]
|
#![feature(const_assume)]
|
||||||
#![feature(const_black_box)]
|
#![feature(const_black_box)]
|
||||||
|
@ -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 {
|
|
||||||
// ...
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
@ -1,7 +1,7 @@
|
|||||||
// build-pass
|
// build-pass
|
||||||
// compile-flags: -C panic=abort
|
// compile-flags: -C panic=abort
|
||||||
// no-prefer-dynamic
|
// no-prefer-dynamic
|
||||||
#![feature(cfg_panic)]
|
|
||||||
|
|
||||||
#[cfg(panic = "unwind")]
|
#[cfg(panic = "unwind")]
|
||||||
pub fn bad() -> i32 { }
|
pub fn bad() -> i32 { }
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
// ignore-emscripten no panic_unwind implementation
|
// ignore-emscripten no panic_unwind implementation
|
||||||
// ignore-wasm32 no panic_unwind implementation
|
// ignore-wasm32 no panic_unwind implementation
|
||||||
// ignore-wasm64 no panic_unwind implementation
|
// ignore-wasm64 no panic_unwind implementation
|
||||||
#![feature(cfg_panic)]
|
|
||||||
|
|
||||||
#[cfg(panic = "abort")]
|
#[cfg(panic = "abort")]
|
||||||
pub fn bad() -> i32 { }
|
pub fn bad() -> i32 { }
|
||||||
|
@ -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());
|
|
||||||
}
|
|
@ -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`.
|
|
@ -1,5 +1,4 @@
|
|||||||
// run-pass
|
// run-pass
|
||||||
#![feature(cfg_panic)]
|
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
named_argument_takes_precedence_to_captured();
|
named_argument_takes_precedence_to_captured();
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
// entering the catch_unwind.
|
// entering the catch_unwind.
|
||||||
//
|
//
|
||||||
// run-pass
|
// run-pass
|
||||||
#![feature(cfg_panic)]
|
|
||||||
|
|
||||||
use std::panic::catch_unwind;
|
use std::panic::catch_unwind;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user