export assert_unsafe_precondition macro for std-internal use
This commit is contained in:
parent
38ded12923
commit
25babe9a79
@ -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)
|
||||
}
|
||||
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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.
|
||||
///
|
||||
|
@ -358,6 +358,7 @@
|
||||
#![feature(str_internals)]
|
||||
#![feature(strict_provenance)]
|
||||
#![feature(strict_provenance_atomic_ptr)]
|
||||
#![feature(ub_checks)]
|
||||
// tidy-alphabetical-end
|
||||
//
|
||||
// Library features (alloc):
|
||||
|
Loading…
Reference in New Issue
Block a user