mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-24 07:44:10 +00:00
Liberate late-bound regions rather than erasing them in needless_pass_by_value
This commit is contained in:
parent
0f7558148c
commit
17cb2e47e5
@ -149,7 +149,7 @@ impl<'tcx> LateLintPass<'tcx> for NeedlessPassByValue {
|
||||
};
|
||||
|
||||
let fn_sig = cx.tcx.fn_sig(fn_def_id).subst_identity();
|
||||
let fn_sig = cx.tcx.erase_late_bound_regions(fn_sig);
|
||||
let fn_sig = cx.tcx.liberate_late_bound_regions(fn_def_id.to_def_id(), fn_sig);
|
||||
|
||||
for (idx, ((input, &ty), arg)) in decl.inputs.iter().zip(fn_sig.inputs()).zip(body.params).enumerate() {
|
||||
// All spans generated from a proc-macro invocation are the same...
|
||||
|
9
tests/ui/crashes/needless_pass_by_value-w-late-bound.rs
Normal file
9
tests/ui/crashes/needless_pass_by_value-w-late-bound.rs
Normal file
@ -0,0 +1,9 @@
|
||||
// https://github.com/rust-lang/rust/issues/107147
|
||||
|
||||
#![warn(clippy::needless_pass_by_value)]
|
||||
|
||||
struct Foo<'a>(&'a [(); 100]);
|
||||
|
||||
fn test(x: Foo<'_>) {}
|
||||
|
||||
fn main() {}
|
15
tests/ui/crashes/needless_pass_by_value-w-late-bound.stderr
Normal file
15
tests/ui/crashes/needless_pass_by_value-w-late-bound.stderr
Normal file
@ -0,0 +1,15 @@
|
||||
error: this argument is passed by value, but not consumed in the function body
|
||||
--> $DIR/needless_pass_by_value-w-late-bound.rs:7:12
|
||||
|
|
||||
LL | fn test(x: Foo<'_>) {}
|
||||
| ^^^^^^^ help: consider taking a reference instead: `&Foo<'_>`
|
||||
|
|
||||
help: consider marking this type as `Copy`
|
||||
--> $DIR/needless_pass_by_value-w-late-bound.rs:5:1
|
||||
|
|
||||
LL | struct Foo<'a>(&'a [(); 100]);
|
||||
| ^^^^^^^^^^^^^^
|
||||
= note: `-D clippy::needless-pass-by-value` implied by `-D warnings`
|
||||
|
||||
error: aborting due to previous error
|
||||
|
Loading…
Reference in New Issue
Block a user