about summary refs log tree commit diff
diff options
context:
space:
mode:
authorest31 <MTest31@outlook.com>2020-09-22 15:30:09 +0200
committerest31 <MTest31@outlook.com>2020-09-22 15:34:22 +0200
commit05c3a2b07dc66fabc874181ce1eebea192cb4b56 (patch)
treea9d307162be87d991ad84244cbdcfb736929fdab
parent285fc7d704fcdd7b2a37d475d04d5d955490e000 (diff)
downloadrust-05c3a2b07dc66fabc874181ce1eebea192cb4b56.tar.gz
rust-05c3a2b07dc66fabc874181ce1eebea192cb4b56.zip
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 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 cbbfcb46113..8d37cffeef5 100644
--- a/library/core/src/cell.rs
+++ b/library/core/src/cell.rs
@@ -700,6 +700,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)
     }
@@ -722,6 +723,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);
@@ -1056,6 +1058,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())
     }