[significant_drop_tightening] Fix #11189
This commit is contained in:
parent
fca1f9aec5
commit
f0a16bb8a3
4 changed files with 64 additions and 12 deletions
|
|
@ -58,6 +58,26 @@ pub fn issue_11160() -> bool {
|
|||
true
|
||||
}
|
||||
|
||||
pub fn issue_11189() {
|
||||
struct Number {
|
||||
pub value: u32,
|
||||
}
|
||||
|
||||
fn do_something() -> Result<(), ()> {
|
||||
let number = Mutex::new(Number { value: 1 });
|
||||
let number2 = Mutex::new(Number { value: 2 });
|
||||
let number3 = Mutex::new(Number { value: 3 });
|
||||
let mut lock = number.lock().unwrap();
|
||||
let mut lock2 = number2.lock().unwrap();
|
||||
let mut lock3 = number3.lock().unwrap();
|
||||
lock.value += 1;
|
||||
lock2.value += 1;
|
||||
lock3.value += 1;
|
||||
drop((lock, lock2, lock3));
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
pub fn path_return_can_be_ignored() -> i32 {
|
||||
let mutex = Mutex::new(1);
|
||||
let lock = mutex.lock().unwrap();
|
||||
|
|
|
|||
|
|
@ -57,6 +57,26 @@ pub fn issue_11160() -> bool {
|
|||
true
|
||||
}
|
||||
|
||||
pub fn issue_11189() {
|
||||
struct Number {
|
||||
pub value: u32,
|
||||
}
|
||||
|
||||
fn do_something() -> Result<(), ()> {
|
||||
let number = Mutex::new(Number { value: 1 });
|
||||
let number2 = Mutex::new(Number { value: 2 });
|
||||
let number3 = Mutex::new(Number { value: 3 });
|
||||
let mut lock = number.lock().unwrap();
|
||||
let mut lock2 = number2.lock().unwrap();
|
||||
let mut lock3 = number3.lock().unwrap();
|
||||
lock.value += 1;
|
||||
lock2.value += 1;
|
||||
lock3.value += 1;
|
||||
drop((lock, lock2, lock3));
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
pub fn path_return_can_be_ignored() -> i32 {
|
||||
let mutex = Mutex::new(1);
|
||||
let lock = mutex.lock().unwrap();
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ LL + drop(lock);
|
|||
|
|
||||
|
||||
error: temporary with significant `Drop` can be early dropped
|
||||
--> $DIR/significant_drop_tightening.rs:86:13
|
||||
--> $DIR/significant_drop_tightening.rs:106:13
|
||||
|
|
||||
LL | / {
|
||||
LL | | let mutex = Mutex::new(1i32);
|
||||
|
|
@ -43,7 +43,7 @@ LL + drop(lock);
|
|||
|
|
||||
|
||||
error: temporary with significant `Drop` can be early dropped
|
||||
--> $DIR/significant_drop_tightening.rs:107:13
|
||||
--> $DIR/significant_drop_tightening.rs:127:13
|
||||
|
|
||||
LL | / {
|
||||
LL | | let mutex = Mutex::new(1i32);
|
||||
|
|
@ -67,7 +67,7 @@ LL +
|
|||
|
|
||||
|
||||
error: temporary with significant `Drop` can be early dropped
|
||||
--> $DIR/significant_drop_tightening.rs:113:17
|
||||
--> $DIR/significant_drop_tightening.rs:133:17
|
||||
|
|
||||
LL | / {
|
||||
LL | | let mutex = Mutex::new(vec![1i32]);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue