Suggest mutable references for FnMut closure arguments - #161656
Conversation
|
r? @davidtwco rustbot has assigned @davidtwco. Use Why was this reviewer chosen?The reviewer was selected based on:
|
df6e4d2 to
61d3b06
Compare
| && let hir::ExprKind::AddrOf(hir::BorrowKind::Ref, hir::Mutability::Not, _) = arg.kind | ||
| { | ||
| let mut obligation = obligation.clone(); | ||
| // Error reporting may narrow the cause span to the borrow's operand. | ||
| // Use the whole argument so `suggest_change_mut` can replace the shared borrow. | ||
| obligation.cause.span = arg.span; |
There was a problem hiding this comment.
not sure if this case is in scope, but if the borrow comes from a macro body the suggestion lands inside the macro definition:
macro_rules! call_it {
($f:expr) => { (0..100).for_each(&$f) };
}
fn main() {
let mut value = 0;
let mut func = |increment: usize| value += increment;
call_it!(func);
}
help: consider changing this borrow's mutability
|
2 | ($f:expr) => { (0..100).for_each(&mut $f) };
| +++
since its MachineApplicable and the new test has run-rustfix, cargo fix would rewrite the macro. master emits the same E0525 with no help line, so i think this comes in with the new call site rather than being pre existing.
would a from_expansion check on the arg be enough to rule it out?
verified both commits on master 5db7f4b
|
@bors r+ rollup |
…st-mut-fnmut-reference, r=davidtwco Suggest mutable references for FnMut closure arguments Fixes rust-lang#118843
…st-mut-fnmut-reference, r=davidtwco Suggest mutable references for FnMut closure arguments Fixes rust-lang#118843
Rollup of 25 pull requests Successful merges: - #159074 ([PAC] FnAbi, llvm.ptrauth.resign and Session API change (2/8)) - #159792 (A more readable debug map for IndexMaps) - #161895 (std::sys::pal::sgx: fix mismatched alloc/free alignment) - #161900 (bootstrap: Include feature-gated items in bootstrap tool docs) - #161940 (Promote `wasm32-wasip3` to a tier 2 target) - #162072 (Add new Tier-3 target: `powerpc64-sony-ps3`) - #162179 (type system const items via direct rhs) - #162277 (Introduce `rustc_middle::middel::resolve`) - #162285 (box: fixup map/try_map deallocate calls) - #162286 (string: don't unwind prematurely) - #162289 (alloc: a bunch of safety comments) - #162292 (Update `askama` version to `0.16.1`) - #160509 (Remove `RegionExt`; move methods to `Region` in `rustc_type_ir`) - #160906 (Suggest usize instead of placeholder type for array length constants) - #160936 (traits: Represent live alias arguments as bitsets) - #161400 (Improve diagnostics for references to closures) - #161656 (Suggest mutable references for FnMut closure arguments) - #161711 (Add more splat fn type tests) - #161786 (Make `tcx.def_id_partial_cmp` public) - #161953 (sanitizers: Implicitly disable mutually exclusive sanitizers) - #162155 (add suggestion for `rustc_allowed_through_unstable_modules` attribute) - #162212 (Implement `Rng` for `Box`) - #162246 (Fix incorrect meta span) - #162266 (std: fix typo) - #162291 (Add regression test from 1.98.1)
…st-mut-fnmut-reference, r=davidtwco Suggest mutable references for FnMut closure arguments Fixes rust-lang#118843
Rollup of 25 pull requests Successful merges: - #159074 ([PAC] FnAbi, llvm.ptrauth.resign and Session API change (2/8)) - #159792 (A more readable debug map for IndexMaps) - #160745 (make closures act like MaybeDangling) - #161895 (std::sys::pal::sgx: fix mismatched alloc/free alignment) - #161940 (Promote `wasm32-wasip3` to a tier 2 target) - #162072 (Add new Tier-3 target: `powerpc64-sony-ps3`) - #162179 (type system const items via direct rhs) - #162277 (Introduce `rustc_middle::middel::resolve`) - #162285 (box: fixup map/try_map deallocate calls) - #162286 (string: don't unwind prematurely) - #162289 (alloc: a bunch of safety comments) - #162292 (Update `askama` version to `0.16.1`) - #160509 (Remove `RegionExt`; move methods to `Region` in `rustc_type_ir`) - #160906 (Suggest usize instead of placeholder type for array length constants) - #160936 (traits: Represent live alias arguments as bitsets) - #161400 (Improve diagnostics for references to closures) - #161656 (Suggest mutable references for FnMut closure arguments) - #161711 (Add more splat fn type tests) - #161786 (Make `tcx.def_id_partial_cmp` public) - #161953 (sanitizers: Implicitly disable mutually exclusive sanitizers) - #162155 (add suggestion for `rustc_allowed_through_unstable_modules` attribute) - #162212 (Implement `Rng` for `Box`) - #162246 (Fix incorrect meta span) - #162266 (std: fix typo) - #162291 (Add regression test from 1.98.1)
…st-mut-fnmut-reference, r=davidtwco Suggest mutable references for FnMut closure arguments Fixes rust-lang#118843
…st-mut-fnmut-reference, r=davidtwco Suggest mutable references for FnMut closure arguments Fixes rust-lang#118843
Rollup of 27 pull requests Successful merges: - #159074 ([PAC] FnAbi, llvm.ptrauth.resign and Session API change (2/8)) - #159792 (A more readable debug map for IndexMaps) - #160745 (make closures act like MaybeDangling) - #161940 (Promote `wasm32-wasip3` to a tier 2 target) - #162030 (Prevent `--test` to be used in `rustdoc-html` testsuite) - #162072 (Add new Tier-3 target: `powerpc64-sony-ps3`) - #162179 (type system const items via direct rhs) - #162262 (Avoid manually instantiating some binders in error reporting with `-Znext-solver`) - #162277 (Introduce `rustc_middle::middel::resolve`) - #162285 (box: fixup map/try_map deallocate calls) - #162286 (string: don't unwind prematurely) - #162289 (alloc: a bunch of safety comments) - #162290 (abby test DSL: AliasTyOutlivesViaEnv) - #162292 (Update `askama` version to `0.16.1`) - #160509 (Remove `RegionExt`; move methods to `Region` in `rustc_type_ir`) - #160906 (Suggest usize instead of placeholder type for array length constants) - #160936 (traits: Represent live alias arguments as bitsets) - #161400 (Improve diagnostics for references to closures) - #161656 (Suggest mutable references for FnMut closure arguments) - #161711 (Add more splat fn type tests) - #161786 (Make `tcx.def_id_partial_cmp` public) - #161953 (sanitizers: Implicitly disable mutually exclusive sanitizers) - #162155 (add suggestion for `rustc_allowed_through_unstable_modules` attribute) - #162212 (Implement `Rng` for `Box`) - #162246 (Fix incorrect meta span) - #162266 (std: fix typo) - #162291 (Add regression test from 1.98.1)
…uwer Rollup of 25 pull requests Successful merges: - #162072 (Add new Tier-3 target: `powerpc64-sony-ps3`) - #162179 (type system const items via direct rhs) - #162255 (let people change rustc-dev-guide in-tree) - #162262 (Avoid manually instantiating some binders in error reporting with `-Znext-solver`) - #162277 (Introduce `rustc_middle::middel::resolve`) - #162285 (box: fixup map/try_map deallocate calls) - #162286 (string: don't unwind prematurely) - #162289 (alloc: a bunch of safety comments) - #162290 (abby test DSL: AliasTyOutlivesViaEnv) - #162292 (Update `askama` version to `0.16.1`) - #160509 (Remove `RegionExt`; move methods to `Region` in `rustc_type_ir`) - #160906 (Suggest usize instead of placeholder type for array length constants) - #160936 (traits: Represent live alias arguments as bitsets) - #161394 (fix `is_homogeneous_aggregate`: use unit size, not total size ) - #161400 (Improve diagnostics for references to closures) - #161656 (Suggest mutable references for FnMut closure arguments) - #161711 (Add more splat fn type tests) - #161786 (Make `tcx.def_id_partial_cmp` public) - #161953 (sanitizers: Implicitly disable mutually exclusive sanitizers) - #162155 (add suggestion for `rustc_allowed_through_unstable_modules` attribute) - #162212 (Implement `Rng` for `Box`) - #162246 (Fix incorrect meta span) - #162266 (std: fix typo) - #162291 (Add regression test from 1.98.1) - #162303 (Fix a minor spelling error in `library/std/src/sys/fs/unix.rs`)
…st-mut-fnmut-reference, r=davidtwco Suggest mutable references for FnMut closure arguments Fixes rust-lang#118843
…uwer Rollup of 25 pull requests Successful merges: - #162072 (Add new Tier-3 target: `powerpc64-sony-ps3`) - #162179 (type system const items via direct rhs) - #162255 (let people change rustc-dev-guide in-tree) - #162262 (Avoid manually instantiating some binders in error reporting with `-Znext-solver`) - #162277 (Introduce `rustc_middle::middel::resolve`) - #162285 (box: fixup map/try_map deallocate calls) - #162286 (string: don't unwind prematurely) - #162289 (alloc: a bunch of safety comments) - #162290 (abby test DSL: AliasTyOutlivesViaEnv) - #162292 (Update `askama` version to `0.16.1`) - #160509 (Remove `RegionExt`; move methods to `Region` in `rustc_type_ir`) - #160906 (Suggest usize instead of placeholder type for array length constants) - #160936 (traits: Represent live alias arguments as bitsets) - #161394 (fix `is_homogeneous_aggregate`: use unit size, not total size ) - #161400 (Improve diagnostics for references to closures) - #161656 (Suggest mutable references for FnMut closure arguments) - #161711 (Add more splat fn type tests) - #161786 (Make `tcx.def_id_partial_cmp` public) - #161953 (sanitizers: Implicitly disable mutually exclusive sanitizers) - #162155 (add suggestion for `rustc_allowed_through_unstable_modules` attribute) - #162212 (Implement `Rng` for `Box`) - #162246 (Fix incorrect meta span) - #162266 (std: fix typo) - #162291 (Add regression test from 1.98.1) - #162303 (Fix a minor spelling error in `library/std/src/sys/fs/unix.rs`)
|
Note This PR was benchmarked as part of triage of its containing rollup: triage URL. Finished benchmarking commit (4c9aa76): comparison URL. Overall result: ❌ regressions - no action needed@rustbot label: -perf-regression Instruction countOur most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.
Max RSS (memory usage)Results (primary 1.4%, secondary -4.1%)A less reliable metric. May be of interest, but not used to determine the overall result above.
CyclesResults (secondary -2.0%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Binary sizeThis perf run didn't have relevant results for this metric. Bootstrap: missing data |
…uwer Rollup of 25 pull requests Successful merges: - rust-lang/rust#162072 (Add new Tier-3 target: `powerpc64-sony-ps3`) - rust-lang/rust#162179 (type system const items via direct rhs) - rust-lang/rust#162255 (let people change rustc-dev-guide in-tree) - rust-lang/rust#162262 (Avoid manually instantiating some binders in error reporting with `-Znext-solver`) - rust-lang/rust#162277 (Introduce `rustc_middle::middel::resolve`) - rust-lang/rust#162285 (box: fixup map/try_map deallocate calls) - rust-lang/rust#162286 (string: don't unwind prematurely) - rust-lang/rust#162289 (alloc: a bunch of safety comments) - rust-lang/rust#162290 (abby test DSL: AliasTyOutlivesViaEnv) - rust-lang/rust#162292 (Update `askama` version to `0.16.1`) - rust-lang/rust#160509 (Remove `RegionExt`; move methods to `Region` in `rustc_type_ir`) - rust-lang/rust#160906 (Suggest usize instead of placeholder type for array length constants) - rust-lang/rust#160936 (traits: Represent live alias arguments as bitsets) - rust-lang/rust#161394 (fix `is_homogeneous_aggregate`: use unit size, not total size ) - rust-lang/rust#161400 (Improve diagnostics for references to closures) - rust-lang/rust#161656 (Suggest mutable references for FnMut closure arguments) - rust-lang/rust#161711 (Add more splat fn type tests) - rust-lang/rust#161786 (Make `tcx.def_id_partial_cmp` public) - rust-lang/rust#161953 (sanitizers: Implicitly disable mutually exclusive sanitizers) - rust-lang/rust#162155 (add suggestion for `rustc_allowed_through_unstable_modules` attribute) - rust-lang/rust#162212 (Implement `Rng` for `Box`) - rust-lang/rust#162246 (Fix incorrect meta span) - rust-lang/rust#162266 (std: fix typo) - rust-lang/rust#162291 (Add regression test from 1.98.1) - rust-lang/rust#162303 (Fix a minor spelling error in `library/std/src/sys/fs/unix.rs`)
Fixes #118843