rust/library/core/tests
Dylan DPC 8fa1ed8f12
Rollup merge of #97712 - RalfJung:untyped, r=scottmcm
ptr::copy and ptr::swap are doing untyped copies

The consensus in https://github.com/rust-lang/rust/issues/63159 seemed to be that these operations should be "untyped", i.e., they should treat the data as raw bytes, should work when these bytes violate the validity invariant of `T`, and should exactly preserve the initialization state of the bytes that are being copied. This is already somewhat implied by the description of "copying/swapping size*N bytes" (rather than "N instances of `T`").

The implementations mostly already work that way (well, for LLVM's intrinsics the documentation is not precise enough to say what exactly happens to poison, but if this ever gets clarified to something that would *not* perfectly preserve poison, then I strongly assume there will be some way to make a copy that *does* perfectly preserve poison). However, I had to adjust `swap_nonoverlapping`; after ``@scottmcm's`` [recent changes](https://github.com/rust-lang/rust/pull/94212), that one (sometimes) made a typed copy. (Note that `mem::swap`, which works on mutable references, is unchanged. It is documented as "swapping the values at two mutable locations", which to me strongly indicates that it is indeed typed. It is also safe and can rely on `&mut T` pointing to a valid `T` as part of its safety invariant.)

On top of adding a test (that will be run by Miri), this PR then also adjusts the documentation to indeed stably promise the untyped semantics. I assume this means the PR has to go through t-libs (and maybe t-lang?) FCP.

Fixes https://github.com/rust-lang/rust/issues/63159
2022-07-05 16:04:31 +05:30
..
fmt Use implicit capture syntax in format_args 2022-03-10 10:23:40 -05:00
hash libcore tests: avoid int2ptr casts 2022-06-27 13:30:44 -04:00
iter Add Iterator::next_chunk 2022-06-21 08:57:02 +02:00
num Update int_roundings methods from feedback 2022-05-04 23:20:29 -04:00
ops Expand the docs for ops::ControlFlow a bit 2021-02-06 22:36:05 -08:00
alloc.rs libcore tests: avoid int2ptr casts 2022-06-27 13:30:44 -04:00
any.rs Add some more tests 2022-06-06 12:10:14 +01:00
array.rs Stabilize core::array::from_fn 2022-05-20 11:04:13 -03:00
ascii.rs Add #[must_use] to expensive computations 2021-10-12 23:27:17 -04:00
asserting.rs [RFC 2011] Library code 2022-05-22 07:18:32 -03:00
atomic.rs Make more From impls const 2021-10-18 19:19:28 +09:00
bool.rs Constify bool::then{,_some} 2021-12-15 00:11:23 +08:00
cell.rs Fix Display for cell::{Ref,RefMut} 2022-05-20 11:16:30 -07:00
char.rs Debug print char 0 as '\0' rather than '\u{0}' 2022-03-27 04:49:10 -07:00
clone.rs Use Box::new() instead of box syntax in core tests 2022-05-29 01:44:11 +02:00
cmp.rs Add test for StructuralEq for std::cmp::Ordering. 2022-03-16 14:01:48 -05:00
const_ptr.rs Revert "Revert tests added by PR 81167." 2021-06-27 12:05:17 +02:00
convert.rs Revert "Auto merge of #89450 - usbalbin:const_try_revert, r=oli-obk" 2021-12-12 12:34:59 +08:00
future.rs add tests 2022-02-02 23:07:02 +09:00
intrinsics.rs Switch bootstrap cfgs 2022-02-25 08:00:52 -05:00
lazy.rs Move/rename lazy::{OnceCell, Lazy} to cell::{OnceCell, LazyCell} 2022-06-16 19:53:59 +04:00
lib.rs Add Iterator::next_chunk 2022-06-21 08:57:02 +02:00
macros.rs Allow leading pipe in matches!() patterns. 2021-07-15 22:05:45 +03:00
manually_drop.rs Test ManuallyDrop::clone_from. 2021-07-05 11:55:45 +00:00
mem.rs add cfg_panic bootstrap 2022-02-10 22:10:08 +00:00
nonzero.rs Make From impls of NonZero integer const. 2021-10-20 12:04:58 +09:00
ops.rs Test not never 2021-11-21 19:10:39 -08:00
option.rs Use Box::new() instead of box syntax in core tests 2022-05-29 01:44:11 +02:00
pattern.rs mv std libs to library/ 2020-07-27 19:51:13 -05:00
pin_macro.rs Write {ui,} tests for pin_macro and pin! 2022-02-14 16:56:37 +01:00
pin.rs Make some methods of Pin<&mut T> unstable const 2020-09-18 19:23:50 +02:00
ptr.rs Rollup merge of #97712 - RalfJung:untyped, r=scottmcm 2022-07-05 16:04:31 +05:30
result.rs Use Box::new() instead of box syntax in core tests 2022-05-29 01:44:11 +02:00
simd.rs Miri can run this test now 2022-03-03 14:54:18 -05:00
slice.rs Stage-step cfgs 2022-05-18 12:29:35 -04:00
str_lossy.rs mv std libs to library/ 2020-07-27 19:51:13 -05:00
str.rs mv std libs to library/ 2020-07-27 19:51:13 -05:00
task.rs Move const tests for Poll to library\core 2020-09-04 01:04:34 +02:00
time.rs Make Duration's Debug format pad to width 2021-09-16 03:09:31 +02:00
tuple.rs mv std libs to library/ 2020-07-27 19:51:13 -05:00
unicode.rs Make ui test that are run-pass and do not test the compiler itself library tests 2020-11-30 02:47:32 +01:00
waker.rs libcore tests: avoid int2ptr casts 2022-06-27 13:30:44 -04:00