about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDylan DPC <dylan.dpc@gmail.com>2020-09-23 14:54:15 +0200
committerGitHub <noreply@github.com>2020-09-23 14:54:15 +0200
commitc3c03f2f05f3144c2c24ff10fc6d1cca49a5f0be (patch)
tree68298355fa38099e25ffb0010a8bfade4c8830ea
parentf8dec3d0549beddcae22bc14c49a0778b50334ea (diff)
parent05c3a2b07dc66fabc874181ce1eebea192cb4b56 (diff)
downloadrust-c3c03f2f05f3144c2c24ff10fc6d1cca49a5f0be.tar.gz
rust-c3c03f2f05f3144c2c24ff10fc6d1cca49a5f0be.zip
Rollup merge of #77055 - est31:more_track_caller, r=Mark-Simulacrum
Add #[track_caller] to more panicking Cell functions

Continuation of #74526

Adds the #[track_caller] attribute to almost all panicking Cell
functions. The ones that borrow two Cells in their function
body are spared, because the panic location helps pinpoint
which of the two borrows failed. You'd need to have
full debuginfo and backtraces enabled together with column
info in order to be able to discern the cases.
Column info in debuginfo is only available on non-Windows platforms.
-rw-r--r--library/core/src/cell.rs3
1 files changed, 3 insertions, 0 deletions
diff --git a/library/core/src/cell.rs b/library/core/src/cell.rs
index f60aa2d24c5..15ec13ca65a 100644
--- a/library/core/src/cell.rs
+++ b/library/core/src/cell.rs
@@ -697,6 +697,7 @@ impl<T> RefCell<T> {
     /// ```
     #[inline]
     #[stable(feature = "refcell_replace", since = "1.24.0")]
+    #[track_caller]
     pub fn replace(&self, t: T) -> T {
         mem::replace(&mut *self.borrow_mut(), t)
     }
@@ -719,6 +720,7 @@ impl<T> RefCell<T> {
     /// ```
     #[inline]
     #[stable(feature = "refcell_replace_swap", since = "1.35.0")]
+    #[track_caller]
     pub fn replace_with<F: FnOnce(&mut T) -> T>(&self, f: F) -> T {
         let mut_borrow = &mut *self.borrow_mut();
         let replacement = f(mut_borrow);
@@ -1052,6 +1054,7 @@ impl<T: Clone> Clone for RefCell<T> {
     ///
     /// Panics if the value is currently mutably borrowed.
     #[inline]
+    #[track_caller]
     fn clone(&self) -> RefCell<T> {
         RefCell::new(self.borrow().clone())
     }