Rollup merge of #118781 - RalfJung:core-panic-feature, r=the8472
merge core_panic feature into panic_internals I don't know why those are two separate features, but it does not seem intentional. This merge is useful because with https://github.com/rust-lang/rust/pull/118123, panic_internals is recognized as an internal feature, but core_panic is not -- but core_panic definitely should be internal.
This commit is contained in:
commit
923578e6f9
@ -120,7 +120,6 @@
|
|||||||
#![feature(const_size_of_val)]
|
#![feature(const_size_of_val)]
|
||||||
#![feature(const_waker)]
|
#![feature(const_waker)]
|
||||||
#![feature(core_intrinsics)]
|
#![feature(core_intrinsics)]
|
||||||
#![feature(core_panic)]
|
|
||||||
#![feature(deprecated_suggestion)]
|
#![feature(deprecated_suggestion)]
|
||||||
#![feature(dispatch_from_dyn)]
|
#![feature(dispatch_from_dyn)]
|
||||||
#![feature(error_generic_member_access)]
|
#![feature(error_generic_member_access)]
|
||||||
@ -139,6 +138,7 @@
|
|||||||
#![feature(maybe_uninit_slice)]
|
#![feature(maybe_uninit_slice)]
|
||||||
#![feature(maybe_uninit_uninit_array)]
|
#![feature(maybe_uninit_uninit_array)]
|
||||||
#![feature(maybe_uninit_uninit_array_transpose)]
|
#![feature(maybe_uninit_uninit_array_transpose)]
|
||||||
|
#![feature(panic_internals)]
|
||||||
#![feature(pattern)]
|
#![feature(pattern)]
|
||||||
#![feature(ptr_internals)]
|
#![feature(ptr_internals)]
|
||||||
#![feature(ptr_metadata)]
|
#![feature(ptr_metadata)]
|
||||||
|
@ -167,7 +167,6 @@
|
|||||||
#![feature(const_unicode_case_lookup)]
|
#![feature(const_unicode_case_lookup)]
|
||||||
#![feature(const_unsafecell_get_mut)]
|
#![feature(const_unsafecell_get_mut)]
|
||||||
#![feature(const_waker)]
|
#![feature(const_waker)]
|
||||||
#![feature(core_panic)]
|
|
||||||
#![feature(coverage_attribute)]
|
#![feature(coverage_attribute)]
|
||||||
#![feature(duration_consts_float)]
|
#![feature(duration_consts_float)]
|
||||||
#![feature(internal_impls_macro)]
|
#![feature(internal_impls_macro)]
|
||||||
@ -179,6 +178,7 @@
|
|||||||
#![feature(non_null_convenience)]
|
#![feature(non_null_convenience)]
|
||||||
#![feature(offset_of)]
|
#![feature(offset_of)]
|
||||||
#![feature(offset_of_enum)]
|
#![feature(offset_of_enum)]
|
||||||
|
#![feature(panic_internals)]
|
||||||
#![feature(ptr_alignment_type)]
|
#![feature(ptr_alignment_type)]
|
||||||
#![feature(ptr_metadata)]
|
#![feature(ptr_metadata)]
|
||||||
#![feature(set_ptr_value)]
|
#![feature(set_ptr_value)]
|
||||||
|
@ -32,7 +32,7 @@ macro_rules! panic {
|
|||||||
#[macro_export]
|
#[macro_export]
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
#[cfg_attr(not(test), rustc_diagnostic_item = "assert_eq_macro")]
|
#[cfg_attr(not(test), rustc_diagnostic_item = "assert_eq_macro")]
|
||||||
#[allow_internal_unstable(core_panic)]
|
#[allow_internal_unstable(panic_internals)]
|
||||||
macro_rules! assert_eq {
|
macro_rules! assert_eq {
|
||||||
($left:expr, $right:expr $(,)?) => {
|
($left:expr, $right:expr $(,)?) => {
|
||||||
match (&$left, &$right) {
|
match (&$left, &$right) {
|
||||||
@ -82,7 +82,7 @@ macro_rules! assert_eq {
|
|||||||
#[macro_export]
|
#[macro_export]
|
||||||
#[stable(feature = "assert_ne", since = "1.13.0")]
|
#[stable(feature = "assert_ne", since = "1.13.0")]
|
||||||
#[cfg_attr(not(test), rustc_diagnostic_item = "assert_ne_macro")]
|
#[cfg_attr(not(test), rustc_diagnostic_item = "assert_ne_macro")]
|
||||||
#[allow_internal_unstable(core_panic)]
|
#[allow_internal_unstable(panic_internals)]
|
||||||
macro_rules! assert_ne {
|
macro_rules! assert_ne {
|
||||||
($left:expr, $right:expr $(,)?) => {
|
($left:expr, $right:expr $(,)?) => {
|
||||||
match (&$left, &$right) {
|
match (&$left, &$right) {
|
||||||
@ -139,7 +139,7 @@ macro_rules! assert_ne {
|
|||||||
/// assert_matches!(c, Ok(x) | Err(x) if x.len() < 100);
|
/// assert_matches!(c, Ok(x) | Err(x) if x.len() < 100);
|
||||||
/// ```
|
/// ```
|
||||||
#[unstable(feature = "assert_matches", issue = "82775")]
|
#[unstable(feature = "assert_matches", issue = "82775")]
|
||||||
#[allow_internal_unstable(core_panic)]
|
#[allow_internal_unstable(panic_internals)]
|
||||||
#[rustc_macro_transparency = "semitransparent"]
|
#[rustc_macro_transparency = "semitransparent"]
|
||||||
pub macro assert_matches {
|
pub macro assert_matches {
|
||||||
($left:expr, $(|)? $( $pattern:pat_param )|+ $( if $guard: expr )? $(,)?) => {
|
($left:expr, $(|)? $( $pattern:pat_param )|+ $( if $guard: expr )? $(,)?) => {
|
||||||
@ -787,7 +787,7 @@ macro_rules! unreachable {
|
|||||||
#[macro_export]
|
#[macro_export]
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
#[cfg_attr(not(test), rustc_diagnostic_item = "unimplemented_macro")]
|
#[cfg_attr(not(test), rustc_diagnostic_item = "unimplemented_macro")]
|
||||||
#[allow_internal_unstable(core_panic)]
|
#[allow_internal_unstable(panic_internals)]
|
||||||
macro_rules! unimplemented {
|
macro_rules! unimplemented {
|
||||||
() => {
|
() => {
|
||||||
$crate::panicking::panic("not implemented")
|
$crate::panicking::panic("not implemented")
|
||||||
@ -867,7 +867,7 @@ macro_rules! unimplemented {
|
|||||||
#[macro_export]
|
#[macro_export]
|
||||||
#[stable(feature = "todo_macro", since = "1.40.0")]
|
#[stable(feature = "todo_macro", since = "1.40.0")]
|
||||||
#[cfg_attr(not(test), rustc_diagnostic_item = "todo_macro")]
|
#[cfg_attr(not(test), rustc_diagnostic_item = "todo_macro")]
|
||||||
#[allow_internal_unstable(core_panic)]
|
#[allow_internal_unstable(panic_internals)]
|
||||||
macro_rules! todo {
|
macro_rules! todo {
|
||||||
() => {
|
() => {
|
||||||
$crate::panicking::panic("not yet implemented")
|
$crate::panicking::panic("not yet implemented")
|
||||||
@ -1534,7 +1534,7 @@ macro_rules! include {
|
|||||||
#[rustc_builtin_macro]
|
#[rustc_builtin_macro]
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
#[rustc_diagnostic_item = "assert_macro"]
|
#[rustc_diagnostic_item = "assert_macro"]
|
||||||
#[allow_internal_unstable(core_panic, edition_panic, generic_assert_internals)]
|
#[allow_internal_unstable(panic_internals, edition_panic, generic_assert_internals)]
|
||||||
macro_rules! assert {
|
macro_rules! assert {
|
||||||
($cond:expr $(,)?) => {{ /* compiler built-in */ }};
|
($cond:expr $(,)?) => {{ /* compiler built-in */ }};
|
||||||
($cond:expr, $($arg:tt)+) => {{ /* compiler built-in */ }};
|
($cond:expr, $($arg:tt)+) => {{ /* compiler built-in */ }};
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
#[unstable(feature = "edition_panic", issue = "none", reason = "use panic!() instead")]
|
#[unstable(feature = "edition_panic", issue = "none", reason = "use panic!() instead")]
|
||||||
#[allow_internal_unstable(core_panic, const_format_args)]
|
#[allow_internal_unstable(panic_internals, const_format_args)]
|
||||||
#[rustc_diagnostic_item = "core_panic_2015_macro"]
|
#[rustc_diagnostic_item = "core_panic_2015_macro"]
|
||||||
#[rustc_macro_transparency = "semitransparent"]
|
#[rustc_macro_transparency = "semitransparent"]
|
||||||
pub macro panic_2015 {
|
pub macro panic_2015 {
|
||||||
@ -44,7 +44,7 @@
|
|||||||
|
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
#[unstable(feature = "edition_panic", issue = "none", reason = "use panic!() instead")]
|
#[unstable(feature = "edition_panic", issue = "none", reason = "use panic!() instead")]
|
||||||
#[allow_internal_unstable(core_panic, const_format_args)]
|
#[allow_internal_unstable(panic_internals, const_format_args)]
|
||||||
#[rustc_diagnostic_item = "core_panic_2021_macro"]
|
#[rustc_diagnostic_item = "core_panic_2021_macro"]
|
||||||
#[rustc_macro_transparency = "semitransparent"]
|
#[rustc_macro_transparency = "semitransparent"]
|
||||||
#[cfg(feature = "panic_immediate_abort")]
|
#[cfg(feature = "panic_immediate_abort")]
|
||||||
@ -66,7 +66,7 @@
|
|||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
#[unstable(feature = "edition_panic", issue = "none", reason = "use panic!() instead")]
|
#[unstable(feature = "edition_panic", issue = "none", reason = "use panic!() instead")]
|
||||||
#[allow_internal_unstable(
|
#[allow_internal_unstable(
|
||||||
core_panic,
|
panic_internals,
|
||||||
core_intrinsics,
|
core_intrinsics,
|
||||||
const_dispatch,
|
const_dispatch,
|
||||||
const_eval_select,
|
const_eval_select,
|
||||||
@ -109,7 +109,7 @@ const fn panic_cold_display<T: $crate::fmt::Display>(arg: &T) -> ! {
|
|||||||
|
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
#[unstable(feature = "edition_panic", issue = "none", reason = "use unreachable!() instead")]
|
#[unstable(feature = "edition_panic", issue = "none", reason = "use unreachable!() instead")]
|
||||||
#[allow_internal_unstable(core_panic)]
|
#[allow_internal_unstable(panic_internals)]
|
||||||
#[rustc_diagnostic_item = "unreachable_2015_macro"]
|
#[rustc_diagnostic_item = "unreachable_2015_macro"]
|
||||||
#[rustc_macro_transparency = "semitransparent"]
|
#[rustc_macro_transparency = "semitransparent"]
|
||||||
pub macro unreachable_2015 {
|
pub macro unreachable_2015 {
|
||||||
@ -128,7 +128,7 @@ const fn panic_cold_display<T: $crate::fmt::Display>(arg: &T) -> ! {
|
|||||||
|
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
#[unstable(feature = "edition_panic", issue = "none", reason = "use unreachable!() instead")]
|
#[unstable(feature = "edition_panic", issue = "none", reason = "use unreachable!() instead")]
|
||||||
#[allow_internal_unstable(core_panic)]
|
#[allow_internal_unstable(panic_internals)]
|
||||||
#[rustc_macro_transparency = "semitransparent"]
|
#[rustc_macro_transparency = "semitransparent"]
|
||||||
pub macro unreachable_2021 {
|
pub macro unreachable_2021 {
|
||||||
() => (
|
() => (
|
||||||
@ -145,8 +145,8 @@ const fn panic_cold_display<T: $crate::fmt::Display>(arg: &T) -> ! {
|
|||||||
/// unwind. For example, checks in `_unchecked` functions that are intended for debugging but should
|
/// unwind. For example, checks in `_unchecked` functions that are intended for debugging but should
|
||||||
/// not compromise unwind safety.
|
/// not compromise unwind safety.
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
#[unstable(feature = "core_panic", issue = "none")]
|
#[unstable(feature = "panic_internals", issue = "none")]
|
||||||
#[allow_internal_unstable(core_panic, const_format_args)]
|
#[allow_internal_unstable(panic_internals, const_format_args)]
|
||||||
#[rustc_macro_transparency = "semitransparent"]
|
#[rustc_macro_transparency = "semitransparent"]
|
||||||
pub macro debug_assert_nounwind {
|
pub macro debug_assert_nounwind {
|
||||||
($cond:expr $(,)?) => {
|
($cond:expr $(,)?) => {
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
#![allow(dead_code, missing_docs)]
|
#![allow(dead_code, missing_docs)]
|
||||||
#![unstable(
|
#![unstable(
|
||||||
feature = "core_panic",
|
feature = "panic_internals",
|
||||||
reason = "internal details of the implementation of the `panic!` and related macros",
|
reason = "internal details of the implementation of the `panic!` and related macros",
|
||||||
issue = "none"
|
issue = "none"
|
||||||
)]
|
)]
|
||||||
@ -48,7 +48,7 @@
|
|||||||
#[track_caller]
|
#[track_caller]
|
||||||
#[lang = "panic_fmt"] // needed for const-evaluated panics
|
#[lang = "panic_fmt"] // needed for const-evaluated panics
|
||||||
#[rustc_do_not_const_check] // hooked by const-eval
|
#[rustc_do_not_const_check] // hooked by const-eval
|
||||||
#[rustc_const_unstable(feature = "core_panic", issue = "none")]
|
#[rustc_const_unstable(feature = "panic_internals", issue = "none")]
|
||||||
pub const fn panic_fmt(fmt: fmt::Arguments<'_>) -> ! {
|
pub const fn panic_fmt(fmt: fmt::Arguments<'_>) -> ! {
|
||||||
if cfg!(feature = "panic_immediate_abort") {
|
if cfg!(feature = "panic_immediate_abort") {
|
||||||
super::intrinsics::abort()
|
super::intrinsics::abort()
|
||||||
@ -82,7 +82,7 @@ pub const fn panic_fmt(fmt: fmt::Arguments<'_>) -> ! {
|
|||||||
// and unwinds anyway, we will hit the "unwinding out of nounwind function" guard,
|
// and unwinds anyway, we will hit the "unwinding out of nounwind function" guard,
|
||||||
// which causes a "panic in a function that cannot unwind".
|
// which causes a "panic in a function that cannot unwind".
|
||||||
#[rustc_nounwind]
|
#[rustc_nounwind]
|
||||||
#[rustc_const_unstable(feature = "core_panic", issue = "none")]
|
#[rustc_const_unstable(feature = "panic_internals", issue = "none")]
|
||||||
pub const fn panic_nounwind_fmt(fmt: fmt::Arguments<'_>, force_no_backtrace: bool) -> ! {
|
pub const fn panic_nounwind_fmt(fmt: fmt::Arguments<'_>, force_no_backtrace: bool) -> ! {
|
||||||
#[inline] // this should always be inlined into `panic_nounwind_fmt`
|
#[inline] // this should always be inlined into `panic_nounwind_fmt`
|
||||||
#[track_caller]
|
#[track_caller]
|
||||||
@ -132,7 +132,7 @@ const fn comptime(fmt: fmt::Arguments<'_>, _force_no_backtrace: bool) -> ! {
|
|||||||
#[cfg_attr(not(feature = "panic_immediate_abort"), inline(never), cold)]
|
#[cfg_attr(not(feature = "panic_immediate_abort"), inline(never), cold)]
|
||||||
#[cfg_attr(feature = "panic_immediate_abort", inline)]
|
#[cfg_attr(feature = "panic_immediate_abort", inline)]
|
||||||
#[track_caller]
|
#[track_caller]
|
||||||
#[rustc_const_unstable(feature = "core_panic", issue = "none")]
|
#[rustc_const_unstable(feature = "panic_internals", issue = "none")]
|
||||||
#[lang = "panic"] // needed by codegen for panic on overflow and other `Assert` MIR terminators
|
#[lang = "panic"] // needed by codegen for panic on overflow and other `Assert` MIR terminators
|
||||||
pub const fn panic(expr: &'static str) -> ! {
|
pub const fn panic(expr: &'static str) -> ! {
|
||||||
// Use Arguments::new_v1 instead of format_args!("{expr}") to potentially
|
// Use Arguments::new_v1 instead of format_args!("{expr}") to potentially
|
||||||
@ -150,7 +150,7 @@ pub const fn panic(expr: &'static str) -> ! {
|
|||||||
#[cfg_attr(feature = "panic_immediate_abort", inline)]
|
#[cfg_attr(feature = "panic_immediate_abort", inline)]
|
||||||
#[lang = "panic_nounwind"] // needed by codegen for non-unwinding panics
|
#[lang = "panic_nounwind"] // needed by codegen for non-unwinding panics
|
||||||
#[rustc_nounwind]
|
#[rustc_nounwind]
|
||||||
#[rustc_const_unstable(feature = "core_panic", issue = "none")]
|
#[rustc_const_unstable(feature = "panic_internals", issue = "none")]
|
||||||
pub const fn panic_nounwind(expr: &'static str) -> ! {
|
pub const fn panic_nounwind(expr: &'static str) -> ! {
|
||||||
panic_nounwind_fmt(fmt::Arguments::new_const(&[expr]), /* force_no_backtrace */ false);
|
panic_nounwind_fmt(fmt::Arguments::new_const(&[expr]), /* force_no_backtrace */ false);
|
||||||
}
|
}
|
||||||
@ -166,7 +166,7 @@ pub fn panic_nounwind_nobacktrace(expr: &'static str) -> ! {
|
|||||||
#[inline]
|
#[inline]
|
||||||
#[track_caller]
|
#[track_caller]
|
||||||
#[rustc_diagnostic_item = "panic_str"]
|
#[rustc_diagnostic_item = "panic_str"]
|
||||||
#[rustc_const_unstable(feature = "core_panic", issue = "none")]
|
#[rustc_const_unstable(feature = "panic_internals", issue = "none")]
|
||||||
pub const fn panic_str(expr: &str) -> ! {
|
pub const fn panic_str(expr: &str) -> ! {
|
||||||
panic_display(&expr);
|
panic_display(&expr);
|
||||||
}
|
}
|
||||||
@ -174,7 +174,7 @@ pub const fn panic_str(expr: &str) -> ! {
|
|||||||
#[track_caller]
|
#[track_caller]
|
||||||
#[cfg_attr(not(feature = "panic_immediate_abort"), inline(never), cold)]
|
#[cfg_attr(not(feature = "panic_immediate_abort"), inline(never), cold)]
|
||||||
#[cfg_attr(feature = "panic_immediate_abort", inline)]
|
#[cfg_attr(feature = "panic_immediate_abort", inline)]
|
||||||
#[rustc_const_unstable(feature = "core_panic", issue = "none")]
|
#[rustc_const_unstable(feature = "panic_internals", issue = "none")]
|
||||||
pub const fn panic_explicit() -> ! {
|
pub const fn panic_explicit() -> ! {
|
||||||
panic_display(&"explicit panic");
|
panic_display(&"explicit panic");
|
||||||
}
|
}
|
||||||
@ -191,7 +191,7 @@ pub fn unreachable_display<T: fmt::Display>(x: &T) -> ! {
|
|||||||
#[rustc_do_not_const_check] // hooked by const-eval
|
#[rustc_do_not_const_check] // hooked by const-eval
|
||||||
// enforce a &&str argument in const-check and hook this by const-eval
|
// enforce a &&str argument in const-check and hook this by const-eval
|
||||||
#[rustc_const_panic_str]
|
#[rustc_const_panic_str]
|
||||||
#[rustc_const_unstable(feature = "core_panic", issue = "none")]
|
#[rustc_const_unstable(feature = "panic_internals", issue = "none")]
|
||||||
pub const fn panic_display<T: fmt::Display>(x: &T) -> ! {
|
pub const fn panic_display<T: fmt::Display>(x: &T) -> ! {
|
||||||
panic_fmt(format_args!("{}", *x));
|
panic_fmt(format_args!("{}", *x));
|
||||||
}
|
}
|
||||||
@ -258,7 +258,7 @@ fn panic_in_cleanup() -> ! {
|
|||||||
|
|
||||||
/// This function is used instead of panic_fmt in const eval.
|
/// This function is used instead of panic_fmt in const eval.
|
||||||
#[lang = "const_panic_fmt"]
|
#[lang = "const_panic_fmt"]
|
||||||
#[rustc_const_unstable(feature = "core_panic", issue = "none")]
|
#[rustc_const_unstable(feature = "panic_internals", issue = "none")]
|
||||||
pub const fn const_panic_fmt(fmt: fmt::Arguments<'_>) -> ! {
|
pub const fn const_panic_fmt(fmt: fmt::Arguments<'_>) -> ! {
|
||||||
if let Some(msg) = fmt.as_str() {
|
if let Some(msg) = fmt.as_str() {
|
||||||
// The panic_display function is hooked by const eval.
|
// The panic_display function is hooked by const eval.
|
||||||
|
@ -374,7 +374,6 @@
|
|||||||
#![feature(cfg_eval)]
|
#![feature(cfg_eval)]
|
||||||
#![feature(concat_bytes)]
|
#![feature(concat_bytes)]
|
||||||
#![feature(const_format_args)]
|
#![feature(const_format_args)]
|
||||||
#![feature(core_panic)]
|
|
||||||
#![feature(custom_test_frameworks)]
|
#![feature(custom_test_frameworks)]
|
||||||
#![feature(edition_panic)]
|
#![feature(edition_panic)]
|
||||||
#![feature(format_args_nl)]
|
#![feature(format_args_nl)]
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
#[unstable(feature = "edition_panic", issue = "none", reason = "use panic!() instead")]
|
#[unstable(feature = "edition_panic", issue = "none", reason = "use panic!() instead")]
|
||||||
#[allow_internal_unstable(libstd_sys_internals, const_format_args, core_panic, rt)]
|
#[allow_internal_unstable(libstd_sys_internals, const_format_args, panic_internals, rt)]
|
||||||
#[cfg_attr(not(test), rustc_diagnostic_item = "std_panic_2015_macro")]
|
#[cfg_attr(not(test), rustc_diagnostic_item = "std_panic_2015_macro")]
|
||||||
#[rustc_macro_transparency = "semitransparent"]
|
#[rustc_macro_transparency = "semitransparent"]
|
||||||
pub macro panic_2015 {
|
pub macro panic_2015 {
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
# `core_panic`
|
|
||||||
|
|
||||||
This feature is internal to the Rust compiler and is not intended for general use.
|
|
||||||
|
|
||||||
------------------------
|
|
@ -22,7 +22,7 @@
|
|||||||
//[thin]compile-flags: -C lto=thin
|
//[thin]compile-flags: -C lto=thin
|
||||||
//[fat]compile-flags: -C lto=fat
|
//[fat]compile-flags: -C lto=fat
|
||||||
|
|
||||||
#![feature(core_panic)]
|
#![feature(panic_internals)]
|
||||||
|
|
||||||
// (For some reason, reproducing the LTO issue requires pulling in std
|
// (For some reason, reproducing the LTO issue requires pulling in std
|
||||||
// explicitly this way.)
|
// explicitly this way.)
|
||||||
|
Loading…
Reference in New Issue
Block a user