rustc_pass_by_value: handle inferred generic types (with _)
This commit is contained in:
parent
959bf2bc2e
commit
2728af7bc0
3 changed files with 25 additions and 15 deletions
|
@ -73,19 +73,15 @@ fn gen_args(cx: &LateContext<'_>, segment: &PathSegment<'_>) -> String {
|
|||
let params = args
|
||||
.args
|
||||
.iter()
|
||||
.filter_map(|arg| match arg {
|
||||
GenericArg::Lifetime(lt) => Some(lt.name.ident().to_string()),
|
||||
.map(|arg| match arg {
|
||||
GenericArg::Lifetime(lt) => lt.name.ident().to_string(),
|
||||
GenericArg::Type(ty) => {
|
||||
let snippet =
|
||||
cx.tcx.sess.source_map().span_to_snippet(ty.span).unwrap_or_default();
|
||||
Some(snippet)
|
||||
cx.tcx.sess.source_map().span_to_snippet(ty.span).unwrap_or_default()
|
||||
}
|
||||
GenericArg::Const(c) => {
|
||||
let snippet =
|
||||
cx.tcx.sess.source_map().span_to_snippet(c.span).unwrap_or_default();
|
||||
Some(snippet)
|
||||
cx.tcx.sess.source_map().span_to_snippet(c.span).unwrap_or_default()
|
||||
}
|
||||
_ => None,
|
||||
GenericArg::Infer(_) => String::from("_"),
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
|
|
|
@ -105,11 +105,13 @@ struct WithParameters<T, const N: usize, M = u32> {
|
|||
}
|
||||
|
||||
impl<T> WithParameters<T, 1> {
|
||||
fn test(
|
||||
fn test<'a>(
|
||||
value: WithParameters<T, 1>,
|
||||
reference: &WithParameters<T, 1>, //~ ERROR passing `WithParameters<T, 1>` by reference
|
||||
reference: &'a WithParameters<T, 1>, //~ ERROR passing `WithParameters<T, 1>` by reference
|
||||
reference_with_m: &WithParameters<T, 1, u32>, //~ ERROR passing `WithParameters<T, 1, u32>` by reference
|
||||
) {
|
||||
) -> &'a WithParameters<T, 1> {
|
||||
//~^ ERROR passing `WithParameters<T, 1>` by reference
|
||||
reference as &WithParameters<_, 1> //~ ERROR passing `WithParameters<_, 1>` by reference
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -103,8 +103,8 @@ LL | reference: &CustomAlias,
|
|||
error: passing `WithParameters<T, 1>` by reference
|
||||
--> $DIR/rustc_pass_by_value.rs:110:20
|
||||
|
|
||||
LL | reference: &WithParameters<T, 1>,
|
||||
| ^^^^^^^^^^^^^^^^^^^^^ help: try passing by value: `WithParameters<T, 1>`
|
||||
LL | reference: &'a WithParameters<T, 1>,
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: try passing by value: `WithParameters<T, 1>`
|
||||
|
||||
error: passing `WithParameters<T, 1, u32>` by reference
|
||||
--> $DIR/rustc_pass_by_value.rs:111:27
|
||||
|
@ -112,5 +112,17 @@ error: passing `WithParameters<T, 1, u32>` by reference
|
|||
LL | reference_with_m: &WithParameters<T, 1, u32>,
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try passing by value: `WithParameters<T, 1, u32>`
|
||||
|
||||
error: aborting due to 18 previous errors
|
||||
error: passing `WithParameters<T, 1>` by reference
|
||||
--> $DIR/rustc_pass_by_value.rs:112:10
|
||||
|
|
||||
LL | ) -> &'a WithParameters<T, 1> {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: try passing by value: `WithParameters<T, 1>`
|
||||
|
||||
error: passing `WithParameters<_, 1>` by reference
|
||||
--> $DIR/rustc_pass_by_value.rs:114:22
|
||||
|
|
||||
LL | reference as &WithParameters<_, 1>
|
||||
| ^^^^^^^^^^^^^^^^^^^^^ help: try passing by value: `WithParameters<_, 1>`
|
||||
|
||||
error: aborting due to 20 previous errors
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue