export assert_unsafe_precondition macro for std-internal use
This commit is contained in:
parent
38ded12923
commit
25babe9a79
4 changed files with 11 additions and 4 deletions
|
@ -2720,7 +2720,7 @@ pub const unsafe fn typed_swap<T>(x: *mut T, y: *mut T) {
|
||||||
#[unstable(feature = "core_intrinsics", issue = "none")]
|
#[unstable(feature = "core_intrinsics", issue = "none")]
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
#[cfg_attr(not(bootstrap), rustc_intrinsic)] // just make it a regular fn in bootstrap
|
#[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)
|
cfg!(debug_assertions)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -193,6 +193,7 @@
|
||||||
#![feature(str_split_inclusive_remainder)]
|
#![feature(str_split_inclusive_remainder)]
|
||||||
#![feature(str_split_remainder)]
|
#![feature(str_split_remainder)]
|
||||||
#![feature(strict_provenance)]
|
#![feature(strict_provenance)]
|
||||||
|
#![feature(ub_checks)]
|
||||||
#![feature(unchecked_shifts)]
|
#![feature(unchecked_shifts)]
|
||||||
#![feature(utf16_extra)]
|
#![feature(utf16_extra)]
|
||||||
#![feature(utf16_extra_const)]
|
#![feature(utf16_extra_const)]
|
||||||
|
@ -370,7 +371,8 @@ pub mod hint;
|
||||||
pub mod intrinsics;
|
pub mod intrinsics;
|
||||||
pub mod mem;
|
pub mod mem;
|
||||||
pub mod ptr;
|
pub mod ptr;
|
||||||
mod ub_checks;
|
#[unstable(feature = "ub_checks", issue = "none")]
|
||||||
|
pub mod ub_checks;
|
||||||
|
|
||||||
/* Core language traits */
|
/* Core language traits */
|
||||||
|
|
||||||
|
|
|
@ -46,6 +46,8 @@ use crate::intrinsics::{self, const_eval_select};
|
||||||
/// variables cannot be optimized out in MIR, an innocent-looking `let` can produce enough
|
/// 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.
|
/// 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
|
#[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 {
|
macro_rules! assert_unsafe_precondition {
|
||||||
($kind:ident, $message:expr, ($($name:ident:$ty:ty = $arg:expr),*$(,)?) => $e:expr $(,)?) => {
|
($kind:ident, $message:expr, ($($name:ident:$ty:ty = $arg:expr),*$(,)?) => $e:expr $(,)?) => {
|
||||||
{
|
{
|
||||||
|
@ -75,11 +77,13 @@ macro_rules! assert_unsafe_precondition {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
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
|
/// Checking library UB is always enabled when UB-checking is done
|
||||||
/// (and we use a reexport so that there is no unnecessary wrapper function).
|
/// (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.
|
/// Determines whether we should check for language UB.
|
||||||
///
|
///
|
||||||
|
|
|
@ -358,6 +358,7 @@
|
||||||
#![feature(str_internals)]
|
#![feature(str_internals)]
|
||||||
#![feature(strict_provenance)]
|
#![feature(strict_provenance)]
|
||||||
#![feature(strict_provenance_atomic_ptr)]
|
#![feature(strict_provenance_atomic_ptr)]
|
||||||
|
#![feature(ub_checks)]
|
||||||
// tidy-alphabetical-end
|
// tidy-alphabetical-end
|
||||||
//
|
//
|
||||||
// Library features (alloc):
|
// Library features (alloc):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue