diff options
| author | bors <bors@rust-lang.org> | 2021-07-29 09:35:23 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-07-29 09:35:23 +0000 |
| commit | 5fb3394cbdf0622c9d0c292feb55db0f4c828dc3 (patch) | |
| tree | e1521a5f4ca5e5e8b6e971c7635c10e979974911 /library/core/src | |
| parent | 6e0a8bf7901a3fe2e073b1e702e80f58b76d5087 (diff) | |
| parent | 3f6dc9a8abe9ffd804fed2ddaabb1c67de4c8fbd (diff) | |
| download | rust-5fb3394cbdf0622c9d0c292feb55db0f4c828dc3.tar.gz rust-5fb3394cbdf0622c9d0c292feb55db0f4c828dc3.zip | |
Auto merge of #86664 - m-ou-se:uninit-track-caller, r=JohnTitor
Add #[track_caller] for some function in core::mem. These functions can panic for some types. This makes the panic point to the code that calls e.g. mem::uninitialized(), instead of inside the definition of mem::uninitialized.
Diffstat (limited to 'library/core/src')
| -rw-r--r-- | library/core/src/mem/maybe_uninit.rs | 3 | ||||
| -rw-r--r-- | library/core/src/mem/mod.rs | 2 |
2 files changed, 5 insertions, 0 deletions
diff --git a/library/core/src/mem/maybe_uninit.rs b/library/core/src/mem/maybe_uninit.rs index d3ebc1cebb6..9c88a623361 100644 --- a/library/core/src/mem/maybe_uninit.rs +++ b/library/core/src/mem/maybe_uninit.rs @@ -619,6 +619,7 @@ impl<T> MaybeUninit<T> { #[rustc_const_unstable(feature = "const_maybe_uninit_assume_init", issue = "none")] #[inline(always)] #[rustc_diagnostic_item = "assume_init"] + #[track_caller] pub const unsafe fn assume_init(self) -> T { // SAFETY: the caller must guarantee that `self` is initialized. // This also means that `self` must be a `value` variant. @@ -690,6 +691,7 @@ impl<T> MaybeUninit<T> { #[unstable(feature = "maybe_uninit_extra", issue = "63567")] #[rustc_const_unstable(feature = "maybe_uninit_extra", issue = "63567")] #[inline(always)] + #[track_caller] pub const unsafe fn assume_init_read(&self) -> T { // SAFETY: the caller must guarantee that `self` is initialized. // Reading from `self.as_ptr()` is safe since `self` should be initialized. @@ -937,6 +939,7 @@ impl<T> MaybeUninit<T> { /// ``` #[unstable(feature = "maybe_uninit_array_assume_init", issue = "80908")] #[inline(always)] + #[track_caller] pub unsafe fn array_assume_init<const N: usize>(array: [Self; N]) -> [T; N] { // SAFETY: // * The caller guarantees that all elements of the array are initialized diff --git a/library/core/src/mem/mod.rs b/library/core/src/mem/mod.rs index 2c75de39ffa..aeb5d238162 100644 --- a/library/core/src/mem/mod.rs +++ b/library/core/src/mem/mod.rs @@ -622,6 +622,7 @@ pub const fn needs_drop<T>() -> bool { #[allow(deprecated_in_future)] #[allow(deprecated)] #[rustc_diagnostic_item = "mem_zeroed"] +#[track_caller] pub unsafe fn zeroed<T>() -> T { // SAFETY: the caller must guarantee that an all-zero value is valid for `T`. unsafe { @@ -657,6 +658,7 @@ pub unsafe fn zeroed<T>() -> T { #[allow(deprecated_in_future)] #[allow(deprecated)] #[rustc_diagnostic_item = "mem_uninitialized"] +#[track_caller] pub unsafe fn uninitialized<T>() -> T { // SAFETY: the caller must guarantee that an unitialized value is valid for `T`. unsafe { |
