Stabilize hint_assert_unchecked
Make both `hint_assert_unchecked` and `const_hint_assert_unchecked` stable as `hint_assert_unchecked`.
This commit is contained in:
parent
d356c68043
commit
5745c220e6
@ -126,7 +126,6 @@
|
||||
#![feature(fmt_internals)]
|
||||
#![feature(fn_traits)]
|
||||
#![feature(hasher_prefixfree_extras)]
|
||||
#![feature(hint_assert_unchecked)]
|
||||
#![feature(inplace_iteration)]
|
||||
#![feature(iter_advance_by)]
|
||||
#![feature(iter_next_chunk)]
|
||||
|
@ -146,8 +146,6 @@
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(hint_assert_unchecked)]
|
||||
///
|
||||
/// use core::hint;
|
||||
///
|
||||
/// /// # Safety
|
||||
@ -194,11 +192,11 @@
|
||||
/// to put an an assertion right next to code that checks the same thing, and dereferencing a
|
||||
/// pointer already has the builtin assumption that it is nonnull. However, it illustrates the
|
||||
/// kind of changes the optimizer can make even when the behavior is less obviously related.
|
||||
#[track_caller]
|
||||
#[inline(always)]
|
||||
#[doc(alias = "assume")]
|
||||
#[track_caller]
|
||||
#[unstable(feature = "hint_assert_unchecked", issue = "119131")]
|
||||
#[rustc_const_unstable(feature = "const_hint_assert_unchecked", issue = "119131")]
|
||||
#[stable(feature = "hint_assert_unchecked", since = "CURRENT_RUSTC_VERSION")]
|
||||
#[rustc_const_stable(feature = "hint_assert_unchecked", since = "CURRENT_RUSTC_VERSION")]
|
||||
pub const unsafe fn assert_unchecked(cond: bool) {
|
||||
// SAFETY: The caller promised `cond` is true.
|
||||
unsafe {
|
||||
|
@ -959,7 +959,7 @@ pub unsafe fn drop_in_place<T: ?Sized>(to_drop: *mut T) {
|
||||
/// not be used if the invariant can be discovered by the optimizer on its
|
||||
/// own, or if it does not enable any significant optimizations.
|
||||
///
|
||||
/// This intrinsic does not have a stable counterpart.
|
||||
/// The stabilized version of this intrinsic is [`core::hint::assert_unchecked`].
|
||||
#[rustc_const_stable(feature = "const_assume", since = "1.77.0")]
|
||||
#[rustc_nounwind]
|
||||
#[unstable(feature = "core_intrinsics", issue = "none")]
|
||||
|
@ -130,7 +130,6 @@
|
||||
#![feature(const_fmt_arguments_new)]
|
||||
#![feature(const_hash)]
|
||||
#![feature(const_heap)]
|
||||
#![feature(const_hint_assert_unchecked)]
|
||||
#![feature(const_index_range_slice_index)]
|
||||
#![feature(const_int_from_str)]
|
||||
#![feature(const_intrinsic_copy)]
|
||||
|
@ -335,7 +335,6 @@
|
||||
#![feature(fmt_internals)]
|
||||
#![feature(hasher_prefixfree_extras)]
|
||||
#![feature(hashmap_internals)]
|
||||
#![feature(hint_assert_unchecked)]
|
||||
#![feature(ip)]
|
||||
#![feature(maybe_uninit_slice)]
|
||||
#![feature(maybe_uninit_uninit_array)]
|
||||
|
@ -1,10 +1,6 @@
|
||||
#![feature(hint_assert_unchecked)]
|
||||
#![feature(const_hint_assert_unchecked)]
|
||||
|
||||
const _: () = unsafe {
|
||||
let n = u32::MAX.count_ones();
|
||||
std::hint::assert_unchecked(n < 32); //~ ERROR evaluation of constant value failed
|
||||
};
|
||||
|
||||
fn main() {
|
||||
}
|
||||
fn main() {}
|
||||
|
@ -1,5 +1,5 @@
|
||||
error[E0080]: evaluation of constant value failed
|
||||
--> $DIR/const-assert-unchecked-ub.rs:6:5
|
||||
--> $DIR/const-assert-unchecked-ub.rs:3:5
|
||||
|
|
||||
LL | std::hint::assert_unchecked(n < 32);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `assume` called with `false`
|
||||
|
Loading…
Reference in New Issue
Block a user