disable strict-provenance-violating doctests in Miri
This commit is contained in:
parent
a78c9bee4d
commit
3a95e12c9b
4 changed files with 12 additions and 0 deletions
|
@ -1493,11 +1493,13 @@ mod prim_ref {}
|
|||
/// However, a direct cast back is not possible. You need to use `transmute`:
|
||||
///
|
||||
/// ```rust
|
||||
/// # #[cfg(not(miri))] { // FIXME: use strict provenance APIs once they are stable, then remove this `cfg`
|
||||
/// # let fnptr: fn(i32) -> i32 = |x| x+2;
|
||||
/// # let fnptr_addr = fnptr as usize;
|
||||
/// let fnptr = fnptr_addr as *const ();
|
||||
/// let fnptr: fn(i32) -> i32 = unsafe { std::mem::transmute(fnptr) };
|
||||
/// assert_eq!(fnptr(40), 42);
|
||||
/// # }
|
||||
/// ```
|
||||
///
|
||||
/// Crucially, we `as`-cast to a raw pointer before `transmute`ing to a function pointer.
|
||||
|
|
|
@ -112,11 +112,13 @@ impl<T: ?Sized> *const T {
|
|||
///
|
||||
/// ```
|
||||
/// #![feature(ptr_to_from_bits)]
|
||||
/// # #[cfg(not(miri))] { // doctest does not work with strict provenance
|
||||
/// let array = [13, 42];
|
||||
/// let p0: *const i32 = &array[0];
|
||||
/// assert_eq!(<*const _>::from_bits(p0.to_bits()), p0);
|
||||
/// let p1: *const i32 = &array[1];
|
||||
/// assert_eq!(p1.to_bits() - p0.to_bits(), 4);
|
||||
/// # }
|
||||
/// ```
|
||||
#[unstable(feature = "ptr_to_from_bits", issue = "91126")]
|
||||
#[deprecated(
|
||||
|
@ -140,9 +142,11 @@ impl<T: ?Sized> *const T {
|
|||
///
|
||||
/// ```
|
||||
/// #![feature(ptr_to_from_bits)]
|
||||
/// # #[cfg(not(miri))] { // doctest does not work with strict provenance
|
||||
/// use std::ptr::NonNull;
|
||||
/// let dangling: *const u8 = NonNull::dangling().as_ptr();
|
||||
/// assert_eq!(<*const u8>::from_bits(1), dangling);
|
||||
/// # }
|
||||
/// ```
|
||||
#[unstable(feature = "ptr_to_from_bits", issue = "91126")]
|
||||
#[deprecated(
|
||||
|
|
|
@ -117,12 +117,14 @@ impl<T: ?Sized> *mut T {
|
|||
///
|
||||
/// ```
|
||||
/// #![feature(ptr_to_from_bits)]
|
||||
/// # #[cfg(not(miri))] { // doctest does not work with strict provenance
|
||||
/// let mut array = [13, 42];
|
||||
/// let mut it = array.iter_mut();
|
||||
/// let p0: *mut i32 = it.next().unwrap();
|
||||
/// assert_eq!(<*mut _>::from_bits(p0.to_bits()), p0);
|
||||
/// let p1: *mut i32 = it.next().unwrap();
|
||||
/// assert_eq!(p1.to_bits() - p0.to_bits(), 4);
|
||||
/// }
|
||||
/// ```
|
||||
#[unstable(feature = "ptr_to_from_bits", issue = "91126")]
|
||||
#[deprecated(
|
||||
|
@ -146,9 +148,11 @@ impl<T: ?Sized> *mut T {
|
|||
///
|
||||
/// ```
|
||||
/// #![feature(ptr_to_from_bits)]
|
||||
/// # #[cfg(not(miri))] { // doctest does not work with strict provenance
|
||||
/// use std::ptr::NonNull;
|
||||
/// let dangling: *mut u8 = NonNull::dangling().as_ptr();
|
||||
/// assert_eq!(<*mut u8>::from_bits(1), dangling);
|
||||
/// }
|
||||
/// ```
|
||||
#[unstable(feature = "ptr_to_from_bits", issue = "91126")]
|
||||
#[deprecated(
|
||||
|
|
|
@ -1493,11 +1493,13 @@ mod prim_ref {}
|
|||
/// However, a direct cast back is not possible. You need to use `transmute`:
|
||||
///
|
||||
/// ```rust
|
||||
/// # #[cfg(not(miri))] { // FIXME: use strict provenance APIs once they are stable, then remove this `cfg`
|
||||
/// # let fnptr: fn(i32) -> i32 = |x| x+2;
|
||||
/// # let fnptr_addr = fnptr as usize;
|
||||
/// let fnptr = fnptr_addr as *const ();
|
||||
/// let fnptr: fn(i32) -> i32 = unsafe { std::mem::transmute(fnptr) };
|
||||
/// assert_eq!(fnptr(40), 42);
|
||||
/// # }
|
||||
/// ```
|
||||
///
|
||||
/// Crucially, we `as`-cast to a raw pointer before `transmute`ing to a function pointer.
|
||||
|
|
Loading…
Add table
Reference in a new issue