about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoshua Nelson <jyn514@gmail.com>2021-01-17 12:24:53 -0500
committerJoshua Nelson <jyn514@gmail.com>2021-01-17 12:27:20 -0500
commit394d7018b91db8b5d2a40cc12a7f2389b430f1b9 (patch)
treea800d1977a5def7f2b567139482607fec343f440
parente48eb37b9470a26748c916f7153569906f3c67bf (diff)
downloadrust-394d7018b91db8b5d2a40cc12a7f2389b430f1b9.tar.gz
rust-394d7018b91db8b5d2a40cc12a7f2389b430f1b9.zip
Add track_caller to .steal()
Before:

```
thread 'rustc' panicked at 'attempt to read from stolen value', /home/joshua/rustc/compiler/rustc_data_structures/src/steal.rs:43:15
```

After:

```
thread 'rustc' panicked at 'attempt to steal from stolen value', compiler/rustc_mir/src/transform/mod.rs:423:25
```
-rw-r--r--compiler/rustc_data_structures/src/steal.rs4
1 files changed, 3 insertions, 1 deletions
diff --git a/compiler/rustc_data_structures/src/steal.rs b/compiler/rustc_data_structures/src/steal.rs
index e532a84cea3..7f9e4160fcd 100644
--- a/compiler/rustc_data_structures/src/steal.rs
+++ b/compiler/rustc_data_structures/src/steal.rs
@@ -30,6 +30,7 @@ impl<T> Steal<T> {
         Steal { value: RwLock::new(Some(value)) }
     }
 
+    #[track_caller]
     pub fn borrow(&self) -> MappedReadGuard<'_, T> {
         ReadGuard::map(self.value.borrow(), |opt| match *opt {
             None => panic!("attempted to read from stolen value"),
@@ -37,10 +38,11 @@ impl<T> Steal<T> {
         })
     }
 
+    #[track_caller]
     pub fn steal(&self) -> T {
         let value_ref = &mut *self.value.try_write().expect("stealing value which is locked");
         let value = value_ref.take();
-        value.expect("attempt to read from stolen value")
+        value.expect("attempt to steal from stolen value")
     }
 }