mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-01 23:12:02 +00:00
Partially stabilize const_slice_from_raw_parts
This doesn't stabilize methods working on mutable pointers.
This commit is contained in:
parent
f893495e3d
commit
0753fd117b
@ -6,7 +6,6 @@
|
||||
// Regression test for issue #91827.
|
||||
|
||||
#![feature(const_ptr_offset_from)]
|
||||
#![feature(const_slice_from_raw_parts)]
|
||||
#![feature(extern_types)]
|
||||
|
||||
use std::ptr::addr_of;
|
||||
|
@ -134,7 +134,7 @@
|
||||
#![feature(const_ptr_write)]
|
||||
#![feature(const_raw_ptr_comparison)]
|
||||
#![feature(const_size_of_val)]
|
||||
#![feature(const_slice_from_raw_parts)]
|
||||
#![feature(const_slice_from_raw_parts_mut)]
|
||||
#![feature(const_slice_ptr_len)]
|
||||
#![feature(const_str_from_utf8_unchecked_mut)]
|
||||
#![feature(const_swap)]
|
||||
|
@ -690,7 +690,8 @@ pub const fn null_mut<T: ?Sized + Thin>() -> *mut T {
|
||||
/// ```
|
||||
#[inline]
|
||||
#[stable(feature = "slice_from_raw_parts", since = "1.42.0")]
|
||||
#[rustc_const_unstable(feature = "const_slice_from_raw_parts", issue = "67456")]
|
||||
#[rustc_const_stable(feature = "const_slice_from_raw_parts", since = "1.64.0")]
|
||||
#[rustc_allow_const_fn_unstable(ptr_metadata)]
|
||||
pub const fn slice_from_raw_parts<T>(data: *const T, len: usize) -> *const [T] {
|
||||
from_raw_parts(data.cast(), len)
|
||||
}
|
||||
@ -722,7 +723,7 @@ pub const fn slice_from_raw_parts<T>(data: *const T, len: usize) -> *const [T] {
|
||||
/// ```
|
||||
#[inline]
|
||||
#[stable(feature = "slice_from_raw_parts", since = "1.42.0")]
|
||||
#[rustc_const_unstable(feature = "const_slice_from_raw_parts", issue = "67456")]
|
||||
#[rustc_const_unstable(feature = "const_slice_from_raw_parts_mut", issue = "67456")]
|
||||
pub const fn slice_from_raw_parts_mut<T>(data: *mut T, len: usize) -> *mut [T] {
|
||||
from_raw_parts_mut(data.cast(), len)
|
||||
}
|
||||
|
@ -85,7 +85,7 @@ use crate::ptr;
|
||||
/// [`NonNull::dangling()`]: ptr::NonNull::dangling
|
||||
#[inline]
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[rustc_const_unstable(feature = "const_slice_from_raw_parts", issue = "67456")]
|
||||
#[rustc_const_stable(feature = "const_slice_from_raw_parts", since = "1.64.0")]
|
||||
#[must_use]
|
||||
pub const unsafe fn from_raw_parts<'a, T>(data: *const T, len: usize) -> &'a [T] {
|
||||
// SAFETY: the caller must uphold the safety contract for `from_raw_parts`.
|
||||
@ -129,7 +129,7 @@ pub const unsafe fn from_raw_parts<'a, T>(data: *const T, len: usize) -> &'a [T]
|
||||
/// [`NonNull::dangling()`]: ptr::NonNull::dangling
|
||||
#[inline]
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[rustc_const_unstable(feature = "const_slice_from_raw_parts", issue = "67456")]
|
||||
#[rustc_const_unstable(feature = "const_slice_from_raw_parts_mut", issue = "67456")]
|
||||
#[must_use]
|
||||
pub const unsafe fn from_raw_parts_mut<'a, T>(data: *mut T, len: usize) -> &'a mut [T] {
|
||||
// SAFETY: the caller must uphold the safety contract for `from_raw_parts_mut`.
|
||||
|
@ -73,7 +73,6 @@
|
||||
#![feature(iterator_try_reduce)]
|
||||
#![feature(const_mut_refs)]
|
||||
#![feature(const_pin)]
|
||||
#![feature(const_slice_from_raw_parts)]
|
||||
#![feature(never_type)]
|
||||
#![feature(unwrap_infallible)]
|
||||
#![feature(result_into_ok_or_err)]
|
||||
|
@ -1,6 +1,5 @@
|
||||
// run-pass
|
||||
#![feature(
|
||||
const_slice_from_raw_parts,
|
||||
slice_from_ptr_range,
|
||||
const_slice_from_ptr_range,
|
||||
pointer_byte_offsets,
|
||||
|
@ -7,10 +7,10 @@ LL | &*ptr::slice_from_raw_parts(data, len)
|
||||
| dereferencing pointer failed: null pointer is a dangling pointer (it has no provenance)
|
||||
| inside `std::slice::from_raw_parts::<u32>` at $SRC_DIR/core/src/slice/raw.rs:LL:COL
|
||||
|
|
||||
::: $DIR/forbidden_slices.rs:19:34
|
||||
::: $DIR/forbidden_slices.rs:18:34
|
||||
|
|
||||
LL | pub static S0: &[u32] = unsafe { from_raw_parts(ptr::null(), 0) };
|
||||
| ------------------------------ inside `S0` at $DIR/forbidden_slices.rs:19:34
|
||||
| ------------------------------ inside `S0` at $DIR/forbidden_slices.rs:18:34
|
||||
|
||||
error[E0080]: could not evaluate static initializer
|
||||
--> $SRC_DIR/core/src/slice/raw.rs:LL:COL
|
||||
@ -21,10 +21,10 @@ LL | &*ptr::slice_from_raw_parts(data, len)
|
||||
| dereferencing pointer failed: null pointer is a dangling pointer (it has no provenance)
|
||||
| inside `std::slice::from_raw_parts::<()>` at $SRC_DIR/core/src/slice/raw.rs:LL:COL
|
||||
|
|
||||
::: $DIR/forbidden_slices.rs:20:33
|
||||
::: $DIR/forbidden_slices.rs:19:33
|
||||
|
|
||||
LL | pub static S1: &[()] = unsafe { from_raw_parts(ptr::null(), 0) };
|
||||
| ------------------------------ inside `S1` at $DIR/forbidden_slices.rs:20:33
|
||||
| ------------------------------ inside `S1` at $DIR/forbidden_slices.rs:19:33
|
||||
|
||||
error[E0080]: could not evaluate static initializer
|
||||
--> $SRC_DIR/core/src/slice/raw.rs:LL:COL
|
||||
@ -35,13 +35,13 @@ LL | &*ptr::slice_from_raw_parts(data, len)
|
||||
| dereferencing pointer failed: ALLOC_ID has size 4, so pointer to 8 bytes starting at offset 0 is out-of-bounds
|
||||
| inside `std::slice::from_raw_parts::<u32>` at $SRC_DIR/core/src/slice/raw.rs:LL:COL
|
||||
|
|
||||
::: $DIR/forbidden_slices.rs:23:34
|
||||
::: $DIR/forbidden_slices.rs:22:34
|
||||
|
|
||||
LL | pub static S2: &[u32] = unsafe { from_raw_parts(&D0, 2) };
|
||||
| ---------------------- inside `S2` at $DIR/forbidden_slices.rs:23:34
|
||||
| ---------------------- inside `S2` at $DIR/forbidden_slices.rs:22:34
|
||||
|
||||
error[E0080]: it is undefined behavior to use this value
|
||||
--> $DIR/forbidden_slices.rs:26:1
|
||||
--> $DIR/forbidden_slices.rs:25:1
|
||||
|
|
||||
LL | pub static S4: &[u8] = unsafe { from_raw_parts((&D1) as *const _ as _, 1) };
|
||||
| ^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .<deref>[0]: encountered uninitialized bytes
|
||||
@ -52,7 +52,7 @@ LL | pub static S4: &[u8] = unsafe { from_raw_parts((&D1) as *const _ as _, 1) }
|
||||
}
|
||||
|
||||
error[E0080]: it is undefined behavior to use this value
|
||||
--> $DIR/forbidden_slices.rs:28:1
|
||||
--> $DIR/forbidden_slices.rs:27:1
|
||||
|
|
||||
LL | pub static S5: &[u8] = unsafe { from_raw_parts((&D3) as *const _ as _, size_of::<&u32>()) };
|
||||
| ^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .<deref>: encountered a pointer, but expected plain (non-pointer) bytes
|
||||
@ -63,7 +63,7 @@ LL | pub static S5: &[u8] = unsafe { from_raw_parts((&D3) as *const _ as _, size
|
||||
}
|
||||
|
||||
error[E0080]: it is undefined behavior to use this value
|
||||
--> $DIR/forbidden_slices.rs:30:1
|
||||
--> $DIR/forbidden_slices.rs:29:1
|
||||
|
|
||||
LL | pub static S6: &[bool] = unsafe { from_raw_parts((&D0) as *const _ as _, 4) };
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .<deref>[0]: encountered 0x11, but expected a boolean
|
||||
@ -74,7 +74,7 @@ LL | pub static S6: &[bool] = unsafe { from_raw_parts((&D0) as *const _ as _, 4)
|
||||
}
|
||||
|
||||
error[E0080]: it is undefined behavior to use this value
|
||||
--> $DIR/forbidden_slices.rs:33:1
|
||||
--> $DIR/forbidden_slices.rs:32:1
|
||||
|
|
||||
LL | pub static S7: &[u16] = unsafe {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered an unaligned reference (required 2 byte alignment but found 1)
|
||||
@ -93,10 +93,10 @@ LL | &*ptr::slice_from_raw_parts(data, len)
|
||||
| dereferencing pointer failed: ALLOC_ID has size 8, so pointer to 8 bytes starting at offset 1 is out-of-bounds
|
||||
| inside `std::slice::from_raw_parts::<u64>` at $SRC_DIR/core/src/slice/raw.rs:LL:COL
|
||||
|
|
||||
::: $DIR/forbidden_slices.rs:44:5
|
||||
::: $DIR/forbidden_slices.rs:43:5
|
||||
|
|
||||
LL | from_raw_parts(ptr, 1)
|
||||
| ---------------------- inside `S8` at $DIR/forbidden_slices.rs:44:5
|
||||
| ---------------------- inside `S8` at $DIR/forbidden_slices.rs:43:5
|
||||
|
||||
error[E0080]: could not evaluate static initializer
|
||||
--> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL
|
||||
@ -112,10 +112,10 @@ LL | unsafe { intrinsics::ptr_offset_from_unsigned(self, origin) }
|
||||
LL | unsafe { from_raw_parts(range.start, range.end.sub_ptr(range.start)) }
|
||||
| ------------------------------ inside `from_ptr_range::<u32>` at $SRC_DIR/core/src/slice/raw.rs:LL:COL
|
||||
|
|
||||
::: $DIR/forbidden_slices.rs:47:34
|
||||
::: $DIR/forbidden_slices.rs:46:34
|
||||
|
|
||||
LL | pub static R0: &[u32] = unsafe { from_ptr_range(ptr::null()..ptr::null()) };
|
||||
| ---------------------------------------- inside `R0` at $DIR/forbidden_slices.rs:47:34
|
||||
| ---------------------------------------- inside `R0` at $DIR/forbidden_slices.rs:46:34
|
||||
|
||||
error[E0080]: could not evaluate static initializer
|
||||
--> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL
|
||||
@ -131,10 +131,10 @@ LL | assert!(0 < pointee_size && pointee_size <= isize::MAX as usize);
|
||||
LL | unsafe { from_raw_parts(range.start, range.end.sub_ptr(range.start)) }
|
||||
| ------------------------------ inside `from_ptr_range::<()>` at $SRC_DIR/core/src/slice/raw.rs:LL:COL
|
||||
|
|
||||
::: $DIR/forbidden_slices.rs:48:33
|
||||
::: $DIR/forbidden_slices.rs:47:33
|
||||
|
|
||||
LL | pub static R1: &[()] = unsafe { from_ptr_range(ptr::null()..ptr::null()) };
|
||||
| ---------------------------------------- inside `R1` at $DIR/forbidden_slices.rs:48:33
|
||||
| ---------------------------------------- inside `R1` at $DIR/forbidden_slices.rs:47:33
|
||||
|
|
||||
= note: this error originates in the macro `assert` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
@ -150,13 +150,13 @@ LL | unsafe { intrinsics::offset(self, count) }
|
||||
LL | unsafe { self.offset(count as isize) }
|
||||
| --------------------------- inside `ptr::const_ptr::<impl *const u32>::add` at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL
|
||||
|
|
||||
::: $DIR/forbidden_slices.rs:51:25
|
||||
::: $DIR/forbidden_slices.rs:50:25
|
||||
|
|
||||
LL | from_ptr_range(ptr..ptr.add(2))
|
||||
| ---------- inside `R2` at $DIR/forbidden_slices.rs:51:25
|
||||
| ---------- inside `R2` at $DIR/forbidden_slices.rs:50:25
|
||||
|
||||
error[E0080]: it is undefined behavior to use this value
|
||||
--> $DIR/forbidden_slices.rs:53:1
|
||||
--> $DIR/forbidden_slices.rs:52:1
|
||||
|
|
||||
LL | pub static R4: &[u8] = unsafe {
|
||||
| ^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .<deref>[0]: encountered uninitialized bytes
|
||||
@ -167,7 +167,7 @@ LL | pub static R4: &[u8] = unsafe {
|
||||
}
|
||||
|
||||
error[E0080]: it is undefined behavior to use this value
|
||||
--> $DIR/forbidden_slices.rs:58:1
|
||||
--> $DIR/forbidden_slices.rs:57:1
|
||||
|
|
||||
LL | pub static R5: &[u8] = unsafe {
|
||||
| ^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .<deref>: encountered a pointer, but expected plain (non-pointer) bytes
|
||||
@ -178,7 +178,7 @@ LL | pub static R5: &[u8] = unsafe {
|
||||
}
|
||||
|
||||
error[E0080]: it is undefined behavior to use this value
|
||||
--> $DIR/forbidden_slices.rs:63:1
|
||||
--> $DIR/forbidden_slices.rs:62:1
|
||||
|
|
||||
LL | pub static R6: &[bool] = unsafe {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .<deref>[0]: encountered 0x11, but expected a boolean
|
||||
@ -189,7 +189,7 @@ LL | pub static R6: &[bool] = unsafe {
|
||||
}
|
||||
|
||||
error[E0080]: it is undefined behavior to use this value
|
||||
--> $DIR/forbidden_slices.rs:68:1
|
||||
--> $DIR/forbidden_slices.rs:67:1
|
||||
|
|
||||
LL | pub static R7: &[u16] = unsafe {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered an unaligned reference (required 2 byte alignment but found 1)
|
||||
@ -211,10 +211,10 @@ LL | unsafe { intrinsics::offset(self, count) }
|
||||
LL | unsafe { self.offset(count as isize) }
|
||||
| --------------------------- inside `ptr::const_ptr::<impl *const u64>::add` at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL
|
||||
|
|
||||
::: $DIR/forbidden_slices.rs:75:25
|
||||
::: $DIR/forbidden_slices.rs:74:25
|
||||
|
|
||||
LL | from_ptr_range(ptr..ptr.add(1))
|
||||
| ---------- inside `R8` at $DIR/forbidden_slices.rs:75:25
|
||||
| ---------- inside `R8` at $DIR/forbidden_slices.rs:74:25
|
||||
|
||||
error[E0080]: could not evaluate static initializer
|
||||
--> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL
|
||||
@ -230,10 +230,10 @@ LL | unsafe { intrinsics::ptr_offset_from_unsigned(self, origin) }
|
||||
LL | unsafe { from_raw_parts(range.start, range.end.sub_ptr(range.start)) }
|
||||
| ------------------------------ inside `from_ptr_range::<u32>` at $SRC_DIR/core/src/slice/raw.rs:LL:COL
|
||||
|
|
||||
::: $DIR/forbidden_slices.rs:80:34
|
||||
::: $DIR/forbidden_slices.rs:79:34
|
||||
|
|
||||
LL | pub static R9: &[u32] = unsafe { from_ptr_range(&D0..(&D0 as *const u32).add(1)) };
|
||||
| ----------------------------------------------- inside `R9` at $DIR/forbidden_slices.rs:80:34
|
||||
| ----------------------------------------------- inside `R9` at $DIR/forbidden_slices.rs:79:34
|
||||
|
||||
error[E0080]: could not evaluate static initializer
|
||||
--> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL
|
||||
@ -249,10 +249,10 @@ LL | unsafe { intrinsics::ptr_offset_from_unsigned(self, origin) }
|
||||
LL | unsafe { from_raw_parts(range.start, range.end.sub_ptr(range.start)) }
|
||||
| ------------------------------ inside `from_ptr_range::<u32>` at $SRC_DIR/core/src/slice/raw.rs:LL:COL
|
||||
|
|
||||
::: $DIR/forbidden_slices.rs:81:35
|
||||
::: $DIR/forbidden_slices.rs:80:35
|
||||
|
|
||||
LL | pub static R10: &[u32] = unsafe { from_ptr_range(&D0..&D0) };
|
||||
| ------------------------ inside `R10` at $DIR/forbidden_slices.rs:81:35
|
||||
| ------------------------ inside `R10` at $DIR/forbidden_slices.rs:80:35
|
||||
|
||||
error: aborting due to 18 previous errors
|
||||
|
||||
|
@ -7,10 +7,10 @@ LL | &*ptr::slice_from_raw_parts(data, len)
|
||||
| dereferencing pointer failed: null pointer is a dangling pointer (it has no provenance)
|
||||
| inside `std::slice::from_raw_parts::<u32>` at $SRC_DIR/core/src/slice/raw.rs:LL:COL
|
||||
|
|
||||
::: $DIR/forbidden_slices.rs:19:34
|
||||
::: $DIR/forbidden_slices.rs:18:34
|
||||
|
|
||||
LL | pub static S0: &[u32] = unsafe { from_raw_parts(ptr::null(), 0) };
|
||||
| ------------------------------ inside `S0` at $DIR/forbidden_slices.rs:19:34
|
||||
| ------------------------------ inside `S0` at $DIR/forbidden_slices.rs:18:34
|
||||
|
||||
error[E0080]: could not evaluate static initializer
|
||||
--> $SRC_DIR/core/src/slice/raw.rs:LL:COL
|
||||
@ -21,10 +21,10 @@ LL | &*ptr::slice_from_raw_parts(data, len)
|
||||
| dereferencing pointer failed: null pointer is a dangling pointer (it has no provenance)
|
||||
| inside `std::slice::from_raw_parts::<()>` at $SRC_DIR/core/src/slice/raw.rs:LL:COL
|
||||
|
|
||||
::: $DIR/forbidden_slices.rs:20:33
|
||||
::: $DIR/forbidden_slices.rs:19:33
|
||||
|
|
||||
LL | pub static S1: &[()] = unsafe { from_raw_parts(ptr::null(), 0) };
|
||||
| ------------------------------ inside `S1` at $DIR/forbidden_slices.rs:20:33
|
||||
| ------------------------------ inside `S1` at $DIR/forbidden_slices.rs:19:33
|
||||
|
||||
error[E0080]: could not evaluate static initializer
|
||||
--> $SRC_DIR/core/src/slice/raw.rs:LL:COL
|
||||
@ -35,13 +35,13 @@ LL | &*ptr::slice_from_raw_parts(data, len)
|
||||
| dereferencing pointer failed: ALLOC_ID has size 4, so pointer to 8 bytes starting at offset 0 is out-of-bounds
|
||||
| inside `std::slice::from_raw_parts::<u32>` at $SRC_DIR/core/src/slice/raw.rs:LL:COL
|
||||
|
|
||||
::: $DIR/forbidden_slices.rs:23:34
|
||||
::: $DIR/forbidden_slices.rs:22:34
|
||||
|
|
||||
LL | pub static S2: &[u32] = unsafe { from_raw_parts(&D0, 2) };
|
||||
| ---------------------- inside `S2` at $DIR/forbidden_slices.rs:23:34
|
||||
| ---------------------- inside `S2` at $DIR/forbidden_slices.rs:22:34
|
||||
|
||||
error[E0080]: it is undefined behavior to use this value
|
||||
--> $DIR/forbidden_slices.rs:26:1
|
||||
--> $DIR/forbidden_slices.rs:25:1
|
||||
|
|
||||
LL | pub static S4: &[u8] = unsafe { from_raw_parts((&D1) as *const _ as _, 1) };
|
||||
| ^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .<deref>[0]: encountered uninitialized bytes
|
||||
@ -52,7 +52,7 @@ LL | pub static S4: &[u8] = unsafe { from_raw_parts((&D1) as *const _ as _, 1) }
|
||||
}
|
||||
|
||||
error[E0080]: it is undefined behavior to use this value
|
||||
--> $DIR/forbidden_slices.rs:28:1
|
||||
--> $DIR/forbidden_slices.rs:27:1
|
||||
|
|
||||
LL | pub static S5: &[u8] = unsafe { from_raw_parts((&D3) as *const _ as _, size_of::<&u32>()) };
|
||||
| ^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .<deref>: encountered a pointer, but expected plain (non-pointer) bytes
|
||||
@ -63,7 +63,7 @@ LL | pub static S5: &[u8] = unsafe { from_raw_parts((&D3) as *const _ as _, size
|
||||
}
|
||||
|
||||
error[E0080]: it is undefined behavior to use this value
|
||||
--> $DIR/forbidden_slices.rs:30:1
|
||||
--> $DIR/forbidden_slices.rs:29:1
|
||||
|
|
||||
LL | pub static S6: &[bool] = unsafe { from_raw_parts((&D0) as *const _ as _, 4) };
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .<deref>[0]: encountered 0x11, but expected a boolean
|
||||
@ -74,7 +74,7 @@ LL | pub static S6: &[bool] = unsafe { from_raw_parts((&D0) as *const _ as _, 4)
|
||||
}
|
||||
|
||||
error[E0080]: it is undefined behavior to use this value
|
||||
--> $DIR/forbidden_slices.rs:33:1
|
||||
--> $DIR/forbidden_slices.rs:32:1
|
||||
|
|
||||
LL | pub static S7: &[u16] = unsafe {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered an unaligned reference (required 2 byte alignment but found 1)
|
||||
@ -93,10 +93,10 @@ LL | &*ptr::slice_from_raw_parts(data, len)
|
||||
| dereferencing pointer failed: ALLOC_ID has size 8, so pointer to 8 bytes starting at offset 1 is out-of-bounds
|
||||
| inside `std::slice::from_raw_parts::<u64>` at $SRC_DIR/core/src/slice/raw.rs:LL:COL
|
||||
|
|
||||
::: $DIR/forbidden_slices.rs:44:5
|
||||
::: $DIR/forbidden_slices.rs:43:5
|
||||
|
|
||||
LL | from_raw_parts(ptr, 1)
|
||||
| ---------------------- inside `S8` at $DIR/forbidden_slices.rs:44:5
|
||||
| ---------------------- inside `S8` at $DIR/forbidden_slices.rs:43:5
|
||||
|
||||
error[E0080]: could not evaluate static initializer
|
||||
--> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL
|
||||
@ -112,10 +112,10 @@ LL | unsafe { intrinsics::ptr_offset_from_unsigned(self, origin) }
|
||||
LL | unsafe { from_raw_parts(range.start, range.end.sub_ptr(range.start)) }
|
||||
| ------------------------------ inside `from_ptr_range::<u32>` at $SRC_DIR/core/src/slice/raw.rs:LL:COL
|
||||
|
|
||||
::: $DIR/forbidden_slices.rs:47:34
|
||||
::: $DIR/forbidden_slices.rs:46:34
|
||||
|
|
||||
LL | pub static R0: &[u32] = unsafe { from_ptr_range(ptr::null()..ptr::null()) };
|
||||
| ---------------------------------------- inside `R0` at $DIR/forbidden_slices.rs:47:34
|
||||
| ---------------------------------------- inside `R0` at $DIR/forbidden_slices.rs:46:34
|
||||
|
||||
error[E0080]: could not evaluate static initializer
|
||||
--> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL
|
||||
@ -131,10 +131,10 @@ LL | assert!(0 < pointee_size && pointee_size <= isize::MAX as usize);
|
||||
LL | unsafe { from_raw_parts(range.start, range.end.sub_ptr(range.start)) }
|
||||
| ------------------------------ inside `from_ptr_range::<()>` at $SRC_DIR/core/src/slice/raw.rs:LL:COL
|
||||
|
|
||||
::: $DIR/forbidden_slices.rs:48:33
|
||||
::: $DIR/forbidden_slices.rs:47:33
|
||||
|
|
||||
LL | pub static R1: &[()] = unsafe { from_ptr_range(ptr::null()..ptr::null()) };
|
||||
| ---------------------------------------- inside `R1` at $DIR/forbidden_slices.rs:48:33
|
||||
| ---------------------------------------- inside `R1` at $DIR/forbidden_slices.rs:47:33
|
||||
|
|
||||
= note: this error originates in the macro `assert` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
@ -150,13 +150,13 @@ LL | unsafe { intrinsics::offset(self, count) }
|
||||
LL | unsafe { self.offset(count as isize) }
|
||||
| --------------------------- inside `ptr::const_ptr::<impl *const u32>::add` at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL
|
||||
|
|
||||
::: $DIR/forbidden_slices.rs:51:25
|
||||
::: $DIR/forbidden_slices.rs:50:25
|
||||
|
|
||||
LL | from_ptr_range(ptr..ptr.add(2))
|
||||
| ---------- inside `R2` at $DIR/forbidden_slices.rs:51:25
|
||||
| ---------- inside `R2` at $DIR/forbidden_slices.rs:50:25
|
||||
|
||||
error[E0080]: it is undefined behavior to use this value
|
||||
--> $DIR/forbidden_slices.rs:53:1
|
||||
--> $DIR/forbidden_slices.rs:52:1
|
||||
|
|
||||
LL | pub static R4: &[u8] = unsafe {
|
||||
| ^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .<deref>[0]: encountered uninitialized bytes
|
||||
@ -167,7 +167,7 @@ LL | pub static R4: &[u8] = unsafe {
|
||||
}
|
||||
|
||||
error[E0080]: it is undefined behavior to use this value
|
||||
--> $DIR/forbidden_slices.rs:58:1
|
||||
--> $DIR/forbidden_slices.rs:57:1
|
||||
|
|
||||
LL | pub static R5: &[u8] = unsafe {
|
||||
| ^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .<deref>: encountered a pointer, but expected plain (non-pointer) bytes
|
||||
@ -178,7 +178,7 @@ LL | pub static R5: &[u8] = unsafe {
|
||||
}
|
||||
|
||||
error[E0080]: it is undefined behavior to use this value
|
||||
--> $DIR/forbidden_slices.rs:63:1
|
||||
--> $DIR/forbidden_slices.rs:62:1
|
||||
|
|
||||
LL | pub static R6: &[bool] = unsafe {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .<deref>[0]: encountered 0x11, but expected a boolean
|
||||
@ -189,7 +189,7 @@ LL | pub static R6: &[bool] = unsafe {
|
||||
}
|
||||
|
||||
error[E0080]: it is undefined behavior to use this value
|
||||
--> $DIR/forbidden_slices.rs:68:1
|
||||
--> $DIR/forbidden_slices.rs:67:1
|
||||
|
|
||||
LL | pub static R7: &[u16] = unsafe {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered an unaligned reference (required 2 byte alignment but found 1)
|
||||
@ -211,10 +211,10 @@ LL | unsafe { intrinsics::offset(self, count) }
|
||||
LL | unsafe { self.offset(count as isize) }
|
||||
| --------------------------- inside `ptr::const_ptr::<impl *const u64>::add` at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL
|
||||
|
|
||||
::: $DIR/forbidden_slices.rs:75:25
|
||||
::: $DIR/forbidden_slices.rs:74:25
|
||||
|
|
||||
LL | from_ptr_range(ptr..ptr.add(1))
|
||||
| ---------- inside `R8` at $DIR/forbidden_slices.rs:75:25
|
||||
| ---------- inside `R8` at $DIR/forbidden_slices.rs:74:25
|
||||
|
||||
error[E0080]: could not evaluate static initializer
|
||||
--> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL
|
||||
@ -230,10 +230,10 @@ LL | unsafe { intrinsics::ptr_offset_from_unsigned(self, origin) }
|
||||
LL | unsafe { from_raw_parts(range.start, range.end.sub_ptr(range.start)) }
|
||||
| ------------------------------ inside `from_ptr_range::<u32>` at $SRC_DIR/core/src/slice/raw.rs:LL:COL
|
||||
|
|
||||
::: $DIR/forbidden_slices.rs:80:34
|
||||
::: $DIR/forbidden_slices.rs:79:34
|
||||
|
|
||||
LL | pub static R9: &[u32] = unsafe { from_ptr_range(&D0..(&D0 as *const u32).add(1)) };
|
||||
| ----------------------------------------------- inside `R9` at $DIR/forbidden_slices.rs:80:34
|
||||
| ----------------------------------------------- inside `R9` at $DIR/forbidden_slices.rs:79:34
|
||||
|
||||
error[E0080]: could not evaluate static initializer
|
||||
--> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL
|
||||
@ -249,10 +249,10 @@ LL | unsafe { intrinsics::ptr_offset_from_unsigned(self, origin) }
|
||||
LL | unsafe { from_raw_parts(range.start, range.end.sub_ptr(range.start)) }
|
||||
| ------------------------------ inside `from_ptr_range::<u32>` at $SRC_DIR/core/src/slice/raw.rs:LL:COL
|
||||
|
|
||||
::: $DIR/forbidden_slices.rs:81:35
|
||||
::: $DIR/forbidden_slices.rs:80:35
|
||||
|
|
||||
LL | pub static R10: &[u32] = unsafe { from_ptr_range(&D0..&D0) };
|
||||
| ------------------------ inside `R10` at $DIR/forbidden_slices.rs:81:35
|
||||
| ------------------------ inside `R10` at $DIR/forbidden_slices.rs:80:35
|
||||
|
||||
error: aborting due to 18 previous errors
|
||||
|
||||
|
@ -3,7 +3,6 @@
|
||||
// normalize-stderr-test "a[0-9]+\+0x" -> "A_ID+0x"
|
||||
// error-pattern: could not evaluate static initializer
|
||||
#![feature(
|
||||
const_slice_from_raw_parts,
|
||||
slice_from_ptr_range,
|
||||
const_slice_from_ptr_range,
|
||||
pointer_byte_offsets,
|
||||
|
@ -4,7 +4,6 @@
|
||||
// Regression test for issue #91827.
|
||||
|
||||
#![feature(const_ptr_offset_from)]
|
||||
#![feature(const_slice_from_raw_parts)]
|
||||
#![feature(extern_types)]
|
||||
|
||||
use std::ptr::addr_of;
|
||||
|
@ -2,7 +2,6 @@
|
||||
|
||||
#![feature(const_size_of_val, const_align_of_val)]
|
||||
#![feature(const_size_of_val_raw, const_align_of_val_raw, layout_for_ptr)]
|
||||
#![feature(const_slice_from_raw_parts)]
|
||||
|
||||
use std::{mem, ptr};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user