Auto merge of #11551 - Meczka:fix-fp-needless-pass-by-ref-mut, r=xFrednet
fixed fp caused by moving &mut reference inside of a closure changelog: [`needless_pass_by_ref mut`]: fixes false positive caused by not covering mutable references passed to a closure inside of a fuction fixes #11545
This commit is contained in:
commit
50139e6ad2
@ -336,7 +336,12 @@ impl<'tcx> euv::Delegate<'tcx> for MutablyUsedVariablesCtxt<'tcx> {
|
|||||||
fn borrow(&mut self, cmt: &euv::PlaceWithHirId<'tcx>, _id: HirId, borrow: ty::BorrowKind) {
|
fn borrow(&mut self, cmt: &euv::PlaceWithHirId<'tcx>, _id: HirId, borrow: ty::BorrowKind) {
|
||||||
self.prev_bind = None;
|
self.prev_bind = None;
|
||||||
if let euv::Place {
|
if let euv::Place {
|
||||||
base: euv::PlaceBase::Local(vid),
|
base:
|
||||||
|
euv::PlaceBase::Local(vid)
|
||||||
|
| euv::PlaceBase::Upvar(UpvarId {
|
||||||
|
var_path: UpvarPath { hir_id: vid },
|
||||||
|
..
|
||||||
|
}),
|
||||||
base_ty,
|
base_ty,
|
||||||
..
|
..
|
||||||
} = &cmt.place
|
} = &cmt.place
|
||||||
|
@ -230,6 +230,18 @@ async fn async_vec(b: &mut Vec<bool>) {
|
|||||||
async fn async_vec2(b: &mut Vec<bool>) {
|
async fn async_vec2(b: &mut Vec<bool>) {
|
||||||
b.push(true);
|
b.push(true);
|
||||||
}
|
}
|
||||||
|
fn non_mut(n: &str) {}
|
||||||
|
//Should warn
|
||||||
|
pub async fn call_in_closure1(n: &mut str) {
|
||||||
|
(|| non_mut(n))()
|
||||||
|
}
|
||||||
|
fn str_mut(str: &mut String) -> bool {
|
||||||
|
str.pop().is_some()
|
||||||
|
}
|
||||||
|
//Should not warn
|
||||||
|
pub async fn call_in_closure2(str: &mut String) {
|
||||||
|
(|| str_mut(str))();
|
||||||
|
}
|
||||||
|
|
||||||
// Should not warn.
|
// Should not warn.
|
||||||
pub async fn closure(n: &mut usize) -> impl '_ + FnMut() {
|
pub async fn closure(n: &mut usize) -> impl '_ + FnMut() {
|
||||||
|
@ -108,7 +108,15 @@ LL | async fn inner_async3(x: &mut i32, y: &mut u32) {
|
|||||||
| ^^^^^^^^ help: consider changing to: `&i32`
|
| ^^^^^^^^ help: consider changing to: `&i32`
|
||||||
|
|
||||||
error: this argument is a mutable reference, but not used mutably
|
error: this argument is a mutable reference, but not used mutably
|
||||||
--> $DIR/needless_pass_by_ref_mut.rs:235:25
|
--> $DIR/needless_pass_by_ref_mut.rs:235:34
|
||||||
|
|
|
||||||
|
LL | pub async fn call_in_closure1(n: &mut str) {
|
||||||
|
| ^^^^^^^^ help: consider changing to: `&str`
|
||||||
|
|
|
||||||
|
= warning: changing this function will impact semver compatibility
|
||||||
|
|
||||||
|
error: this argument is a mutable reference, but not used mutably
|
||||||
|
--> $DIR/needless_pass_by_ref_mut.rs:247:25
|
||||||
|
|
|
|
||||||
LL | pub async fn closure(n: &mut usize) -> impl '_ + FnMut() {
|
LL | pub async fn closure(n: &mut usize) -> impl '_ + FnMut() {
|
||||||
| ^^^^^^^^^^ help: consider changing to: `&usize`
|
| ^^^^^^^^^^ help: consider changing to: `&usize`
|
||||||
@ -116,7 +124,7 @@ LL | pub async fn closure(n: &mut usize) -> impl '_ + FnMut() {
|
|||||||
= warning: changing this function will impact semver compatibility
|
= warning: changing this function will impact semver compatibility
|
||||||
|
|
||||||
error: this argument is a mutable reference, but not used mutably
|
error: this argument is a mutable reference, but not used mutably
|
||||||
--> $DIR/needless_pass_by_ref_mut.rs:242:20
|
--> $DIR/needless_pass_by_ref_mut.rs:254:20
|
||||||
|
|
|
|
||||||
LL | pub fn closure2(n: &mut usize) -> impl '_ + FnMut() -> usize {
|
LL | pub fn closure2(n: &mut usize) -> impl '_ + FnMut() -> usize {
|
||||||
| ^^^^^^^^^^ help: consider changing to: `&usize`
|
| ^^^^^^^^^^ help: consider changing to: `&usize`
|
||||||
@ -124,12 +132,12 @@ LL | pub fn closure2(n: &mut usize) -> impl '_ + FnMut() -> usize {
|
|||||||
= warning: changing this function will impact semver compatibility
|
= warning: changing this function will impact semver compatibility
|
||||||
|
|
||||||
error: this argument is a mutable reference, but not used mutably
|
error: this argument is a mutable reference, but not used mutably
|
||||||
--> $DIR/needless_pass_by_ref_mut.rs:253:26
|
--> $DIR/needless_pass_by_ref_mut.rs:265:26
|
||||||
|
|
|
|
||||||
LL | pub async fn closure4(n: &mut usize) {
|
LL | pub async fn closure4(n: &mut usize) {
|
||||||
| ^^^^^^^^^^ help: consider changing to: `&usize`
|
| ^^^^^^^^^^ help: consider changing to: `&usize`
|
||||||
|
|
|
|
||||||
= warning: changing this function will impact semver compatibility
|
= warning: changing this function will impact semver compatibility
|
||||||
|
|
||||||
error: aborting due to 20 previous errors
|
error: aborting due to 21 previous errors
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user