export assert_unsafe_precondition macro for std-internal use

This commit is contained in:
The 8472 2024-04-21 16:34:42 +02:00
parent 38ded12923
commit 25babe9a79
4 changed files with 11 additions and 4 deletions

View File

@ -2720,7 +2720,7 @@ pub const fn is_val_statically_known<T: Copy>(_arg: T) -> bool {
#[unstable(feature = "core_intrinsics", issue = "none")]
#[inline(always)]
#[cfg_attr(not(bootstrap), rustc_intrinsic)] // just make it a regular fn in bootstrap
pub(crate) const fn ub_checks() -> bool {
pub const fn ub_checks() -> bool {
cfg!(debug_assertions)
}

View File

@ -193,6 +193,7 @@
#![feature(str_split_inclusive_remainder)]
#![feature(str_split_remainder)]
#![feature(strict_provenance)]
#![feature(ub_checks)]
#![feature(unchecked_shifts)]
#![feature(utf16_extra)]
#![feature(utf16_extra_const)]
@ -370,7 +371,8 @@ pub mod assert_matches {
pub mod intrinsics;
pub mod mem;
pub mod ptr;
mod ub_checks;
#[unstable(feature = "ub_checks", issue = "none")]
pub mod ub_checks;
/* Core language traits */

View File

@ -46,6 +46,8 @@
/// variables cannot be optimized out in MIR, an innocent-looking `let` can produce enough
/// debuginfo to have a measurable compile-time impact on debug builds.
#[allow_internal_unstable(const_ub_checks)] // permit this to be called in stably-const fn
#[macro_export]
#[unstable(feature = "ub_checks", issue = "none")]
macro_rules! assert_unsafe_precondition {
($kind:ident, $message:expr, ($($name:ident:$ty:ty = $arg:expr),*$(,)?) => $e:expr $(,)?) => {
{
@ -75,11 +77,13 @@ const fn precondition_check($($name:$ty),*) {
}
};
}
pub(crate) use assert_unsafe_precondition;
#[unstable(feature = "ub_checks", issue = "none")]
pub use assert_unsafe_precondition;
/// Checking library UB is always enabled when UB-checking is done
/// (and we use a reexport so that there is no unnecessary wrapper function).
pub(crate) use intrinsics::ub_checks as check_library_ub;
#[unstable(feature = "ub_checks", issue = "none")]
pub use intrinsics::ub_checks as check_library_ub;
/// Determines whether we should check for language UB.
///

View File

@ -358,6 +358,7 @@
#![feature(str_internals)]
#![feature(strict_provenance)]
#![feature(strict_provenance_atomic_ptr)]
#![feature(ub_checks)]
// tidy-alphabetical-end
//
// Library features (alloc):