1
Fork 0

rustc_pass_by_value: handle inferred generic types (with _)

This commit is contained in:
Mahdi Dibaiee 2022-01-11 21:28:04 +00:00
parent 959bf2bc2e
commit 2728af7bc0
No known key found for this signature in database
GPG key ID: BABA115BDF0C598A
3 changed files with 25 additions and 15 deletions

View file

@ -73,19 +73,15 @@ fn gen_args(cx: &LateContext<'_>, segment: &PathSegment<'_>) -> String {
let params = args let params = args
.args .args
.iter() .iter()
.filter_map(|arg| match arg { .map(|arg| match arg {
GenericArg::Lifetime(lt) => Some(lt.name.ident().to_string()), GenericArg::Lifetime(lt) => lt.name.ident().to_string(),
GenericArg::Type(ty) => { GenericArg::Type(ty) => {
let snippet = cx.tcx.sess.source_map().span_to_snippet(ty.span).unwrap_or_default()
cx.tcx.sess.source_map().span_to_snippet(ty.span).unwrap_or_default();
Some(snippet)
} }
GenericArg::Const(c) => { GenericArg::Const(c) => {
let snippet = cx.tcx.sess.source_map().span_to_snippet(c.span).unwrap_or_default()
cx.tcx.sess.source_map().span_to_snippet(c.span).unwrap_or_default();
Some(snippet)
} }
_ => None, GenericArg::Infer(_) => String::from("_"),
}) })
.collect::<Vec<_>>(); .collect::<Vec<_>>();

View file

@ -105,11 +105,13 @@ struct WithParameters<T, const N: usize, M = u32> {
} }
impl<T> WithParameters<T, 1> { impl<T> WithParameters<T, 1> {
fn test( fn test<'a>(
value: WithParameters<T, 1>, 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 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
} }
} }

View file

@ -103,8 +103,8 @@ LL | reference: &CustomAlias,
error: passing `WithParameters<T, 1>` by reference error: passing `WithParameters<T, 1>` by reference
--> $DIR/rustc_pass_by_value.rs:110:20 --> $DIR/rustc_pass_by_value.rs:110:20
| |
LL | reference: &WithParameters<T, 1>, LL | reference: &'a WithParameters<T, 1>,
| ^^^^^^^^^^^^^^^^^^^^^ help: try passing by value: `WithParameters<T, 1>` | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try passing by value: `WithParameters<T, 1>`
error: passing `WithParameters<T, 1, u32>` by reference error: passing `WithParameters<T, 1, u32>` by reference
--> $DIR/rustc_pass_by_value.rs:111:27 --> $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>, LL | reference_with_m: &WithParameters<T, 1, u32>,
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try passing by value: `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